Arvore

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

Relacionados

  • arvore
    2560 palavras | 11 páginas
  • Arvore
    1402 palavras | 6 páginas
  • Arvore
    526 palavras | 3 páginas
  • A arvore
    393 palavras | 2 páginas
  • arvore
    2861 palavras | 12 páginas
  • Arvore
    453 palavras | 2 páginas
  • Arvore
    1760 palavras | 8 páginas
  • árvore
    284 palavras | 2 páginas
  • Arvore
    893 palavras | 4 páginas
  • arvore
    822 palavras | 4 páginas