Arvore binaria em c

Disponível somente no TrabalhosFeitos
  • Páginas : 2 (380 palavras )
  • Download(s) : 0
  • Publicado : 24 de novembro de 2011
Ler documento completo
Amostra do texto
#include
#include
#include

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

//cria arvorevazia
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);
}
}
voidabb_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)
{...
tracking img