Arvore binaria em c

380 palavras 2 páginas
#include
#include
#include

//PROGRAMA: abbExemplo
//arvore binaria struct arv
{
int info; struct arv* esq; struct arv* dir;
};
typedef struct arv Arv;

//cria arvore vazia
Arv* abb_cria()
{
return NULL;
}

//verifica se a arvore está vazia int abb_vazia(Arv* a)
{
return a == NULL;
}

//insere elemento
Arv *abb_insere(Arv* a,int c)
{
Arv *p,*q,*r; p=(Arv*)malloc(sizeof(Arv)); p->info = c; p->esq = p->dir = NULL; if (abb_vazia(a))//primeiro elemento da árvore a=p; else { q=a; while(q!=NULL) { r=q; if(c < q->info) q=q->esq; else q=q->dir; } if(c < r->info) r->esq=p; else r->dir=p; } return a; }

void abb_posfixo(Arv* a)
{
if(!abb_vazia(a)) //travessia em pos-ordem { abb_posfixo(a->esq); //visita a arvore esquerda, depois a direita e depois a raiz abb_posfixo(a->dir); printf("%d ", a->info); }
}
void abb_infixo(Arv* a)
{
if(!abb_vazia(a)) //travessia em ordem { abb_infixo(a->esq); //visita a arvore esquerda, depois a raiz e depois a arvore direita if(a->info % 2 == 0) printf("%d ", a->info); abb_infixo(a->dir); }
}
void abb_prefixo(Arv* a)
{
if(!abb_vazia(a)) //travessia em preordem { printf("%d ", a->info); abb_prefixo(a->esq); //visita a arvore raiz, depois a esquerda, depois a direita abb_prefixo(a->dir); }
}

Arv* abb_busca(Arv *r, int v){ if (r==NULL) return NULL; if (r->info > v) return abb_busca(r->esq,v); if (r->info < v) return abb_busca(r->dir,v); return r;
}

int contando(Arv *a)
{

Relacionados

  • Árvore de Busca Binária em C
    508 palavras | 3 páginas
  • Biblioteca de Arquivos com Arvore Binária em C
    3982 palavras | 16 páginas
  • Arvore binaria de busca - codigo em c
    770 palavras | 4 páginas
  • arvores binarias
    2352 palavras | 10 páginas
  • estudante
    2008 palavras | 9 páginas
  • Trabalho de Arvores - C #
    556 palavras | 3 páginas
  • Arvores
    2734 palavras | 11 páginas
  • Aula de arvore
    2592 palavras | 11 páginas
  • algoritmo
    2053 palavras | 9 páginas
  • teste
    3016 palavras | 13 páginas