arvores
#include
#define OK 1
#define ERRO 0
// Crie mais 5 fun??es para mostrar a ?rvore das formas:In-order, Pre-order, Pos-Order
typedef struct def_arvore { int Dado; struct def_arvore *FilhoEsq; struct def_arvore *FilhoDir; struct def_arvore *Pai;
} tipo_arvore;
tipo_arvore *nodo = NULL;
int insere_arv(int Dado) { tipo_arvore *novo, *aux, *temp;
novo = (tipo_arvore *) malloc(sizeof (tipo_arvore));
if (novo == NULL) return (ERRO);
novo -> Dado = Dado; novo -> FilhoEsq = NULL; novo -> FilhoDir = NULL; aux = nodo;
while (aux != NULL) /* Acha o ponto onde vai inserir */ {
temp = aux; if (Dado > (aux -> Dado)) aux = aux -> FilhoDir; else aux = aux -> FilhoEsq; }
if (aux == nodo) { novo -> Pai = NULL; nodo = novo; } else { novo -> Pai = temp; if (Dado > temp->Dado) temp -> FilhoDir = novo; else temp -> FilhoEsq = novo; } return (OK);
}
int pesquisa(int Dado) { tipo_arvore *aux;
aux = nodo;
while ((aux != NULL)&&(aux->Dado != Dado)) {
if (Dado > (aux->Dado)) aux = aux->FilhoDir; else aux = aux ->FilhoEsq; } if (aux == NULL) return (ERRO); else return (OK);
}
int remover(int Dado) { tipo_arvore *aux, *temp;
aux = nodo;
while ((aux != NULL)&&(aux->Dado != Dado)) { if (Dado > (aux->Dado)) aux = aux->FilhoDir; else aux = aux ->FilhoEsq; }
if ((aux->FilhoDir == NULL)&&(aux->FilhoEsq == NULL)) { if (aux->Pai->FilhoEsq->Dado == aux->Dado) { aux->Pai->FilhoEsq == NULL; } else { aux->Pai->FilhoDir == NULL; } } else { if ((aux->FilhoDir == NULL)&&(aux->FilhoEsq != NULL)) {