Arvore

Disponível somente no TrabalhosFeitos
  • Páginas : 3 (502 palavras )
  • Download(s) : 0
  • Publicado : 25 de abril de 2013
Ler documento completo
Amostra do texto
# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
struct noArv{
int info;
struct noArv *esq;
struct noArv *dir;
}; typedef struct noArv NoArv;

NoArv*abb_insere(NoArv *a,int v){
if(a==NULL){
a=(NoArv*)malloc(sizeof(NoArv));
a->info=v;
a->esq=a->dir=NULL;
}
else{
if(v<a->info)a->esq=abb_insere(a->esq,v);
else
a->dir=abb_insere(a->dir,v);
}
return a;
}

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

void abb_imprime_pre(NoArv *a)
{if(a!=NULL)
{
printf("&d\n",a->info);
abb_imprime_pre(a->esq);
abb_imprime_pre(a->dir);
}
}

void abb_imprime_em(NoArv *a)
{
if(a!=NULL)
{abb_imprime_em(a->esq);
printf("&d\n",a->info);
abb_imprime_em(a->dir);
}
}

void abb_imprime_pos(NoArv *a)
{
if(a!=NULL)
{abb_imprime_pos(a->esq);
abb_imprime_pos(a->dir);
printf("&d\n",a->info);
}
}

void abb_kill(NoArv *a)
{
if(a!=NULL)
{
abb_kill(a->esq);abb_kill(a->dir);
free(a);
a=NULL;
}
}

NoArv* abb_remover(NoArv *a,int v){
if(v==NULL)
return NULL;
else
if(a->info>v)a->esq=abb_remover(a->esq,v);
else
if(a->info<v)
a->dir=abb_remover(a->dir,v);
else {
/*achou o nó a remover*/
/*nó semfilhos*/
if(a->esq==NULL&&a->dir==NULL){
free(a);
a=NULL;
} /*nó só tem filho à direita*/...
tracking img