Arvorebinaria
#include
#include
#include
struct arvore_bin{ int info; struct arvore_bin *esquerda; struct arvore_bin *direita;
};
typedef struct arvore_bin arvore; arvore *raiz; //raiz principal
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); }
}
void emOrdem(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 if(b==0