Arvorebinaria

Disponível somente no TrabalhosFeitos
  • Páginas : 2 (330 palavras )
  • Download(s) : 0
  • Publicado : 17 de dezembro de 2012
Ler documento completo
Amostra do texto
#include
#include
#include
#include

struct arvore_bin{
int info;
struct arvore_bin *esquerda;
struct arvore_bin *direita;
};
typedef struct arvore_bin arvore;
arvore *raiz; //raizprincipal

arvore *visita_arvore(arvore *ra, arvore *r, int pValor){

if(r==NULL){
r=(arvore *) malloc(sizeof(arvore));
if(r==NULL){
printf("\nError ao criar");system("pause");
exit(0);

}
r->esquerda=NULL;
r->direita=NULL;
r->info=pValor;
if(ra==NULL){
printf("\nEsse eh o noh raiz %d",pValor);system("pause");
return r;
}
if(pValorinfo){
ra->esquerda=r;
printf("\nAdiciona a esquerda de %d",ra->info);
}else{
ra->direita=r;printf("\nAdiciona a direita de %d",ra->info);
}
return r;
}
if(pValorinfo){
visita_arvore(r,r->esquerda,pValor);
}else{visita_arvore(r,r->direita,pValor);
}
}

void incluir(void){
int vValor;
printf("\nValor");
scanf("%d", &vValor);
if(raiz==NULL){
raiz=visita_arvore(raiz,raiz,vValor);}else{
visita_arvore(raiz,raiz,vValor);
}
}

void preOrdem(arvore *pNo){
if(pNo!=NULL){
printf("%d - ",pNo->info);
preOrdem(pNo->esquerda);preOrdem(pNo->direita);
}
}

void posOrdem(arvore *pNo){
if(pNo!=NULL){
posOrdem(pNo->esquerda);
posOrdem(pNo->direita);
printf("%d - ",pNo->info);
}
}

voidemOrdem(arvore *pNo){
if(pNo!=NULL){
emOrdem(pNo->esquerda);
printf("%d - ",pNo->info);
emOrdem(pNo->direita);
}
}

int listar(arvore *pNo){
int a=1,b=1;if(pNo!=NULL){
printf("(");
printf("%d ",pNo->info);
a=listar(pNo->esquerda);
b=listar(pNo->direita);
if(b==0 && a==0){
printf("()");
}else...
tracking img