Arvore
# 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ó sem filhos*/ if(a->esq==NULL&&a->dir==NULL){ free(a); a=NULL; } /*nó só tem filho à direita*/