Anda di halaman 1dari 12

Engenharia de Computao UNIVALI - ITAJA

rvore Binria

Observaes

Programa realizado com as linguagens de programao C e C++;

A arvore foi feita atravs de encadeamento dinmico, tendo as estruturas com ponteiros;

Requisitos TAD
Definies, estruturas e declaraes necessrias;
Funo para iniciar uma rvore; Funo para Inserir um novo n; Funo para remover um n (considerando as trs situaes de excluso); Funo para pesquisar um n;

Funo para mostrar a rvore/parte da rvore at determinado n (considerando os 3 caminhamentos em profundidade);


Funo para destruir a rvore;

Estrutura (N da rvore)
typedef struct noarv {
struct noarv* esq; int info;

struct noarv*dir;
}tnoarv;

typedef tnoarv* tArv;

Funo - Inicializa rvore

Inicia a o ponteiro da arvore apontando para NULL.

Funo Insere N
Verifica se a rvore possui algum n j inserido, se no, o primeiro n criado, caso j exista algum, o novo n entra em uma condio caso o valor seja maior que o valor do n existente este recebe o apontador da direita, caso seja menor este recebe o apontador da esquerda.

Funo Remove N
Faz-se uma varredura na lista (rvore) com o princpio: Se o valor que ser removido for menor que o n atual, faz recursividade esquerda, caso seja maior que o atual, faz recursividade a direita; Quando o n a ser removido for encontrado, verificamos se os ns filhos da esquerda e direita no so NULL, se no forem, buscamos o menor n a partir do n da direita.

Cdigo Remoo
} } } } }else{ aux = *raiz; // caso os n da direita e da esquerda, ou somente o da direita, precisamos apenas remover // o n atual e fazer ajustar os ponteiros if(arvore_vazia((*raiz)->esq)) // se o n da esquerda for vazio *raiz = (*raiz)->dir; // o n pai do atual, apontar para o filho da direita do n atual. vazio. else *raiz = (*raiz)->esq; // se o n da esquerda no for // o n pai do atual, apontar para o filho

da esquerda do n atual. free(aux); }

Funo Pesquisa N
Faz uma pesquisa nos ns da rvore para achar o valor passado como parmetro, caso o valor exista na rvore, ela retorna o n que est o valor, caso no exista retorna NULL.

Funo Exibe rvore


Se o ponteiro da esquerda do primeiro n for diferente de NULL ele percorre o lado esquerdo mostrando todos os ns o mesmo vale para o lado direito.

Funo Destri rvore


Percorre todos os ns da esquerda at se deparar com NULL, depois faz o mesmo com os da direita, remove o n atual e aponta para NULL.

Alunos: Lucas, Guilherme, Roney. Estrutura de Dados. Professor: Luiz Fernando Mximo. Engenharia de Computao,

UNIVALI Itaja.