arvores

417 palavras 2 páginas
#include
#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)) {

Relacionados

  • Arvores
    773 palavras | 4 páginas
  • ARVORES
    1671 palavras | 7 páginas
  • Árvores
    3810 palavras | 16 páginas
  • Árvores
    260 palavras | 2 páginas
  • Árvores
    310 palavras | 2 páginas
  • arvores
    1038 palavras | 5 páginas
  • Árvores
    453 palavras | 2 páginas
  • Arvores
    2470 palavras | 10 páginas
  • Arvores
    376 palavras | 2 páginas
  • árvores
    459 palavras | 2 páginas