Você está na página 1de 2

rvore binria de busca Aula 3

ESTRUTURAS DE DADOS II PROF. JOO PAULO

UEMG CAMPUS FRUTAL SISTEMAS DE INFORMAO

rvore de busca binria Seja A uma rvore binria cuja raiz armazena um item r. Dizemos que A uma rvore de busca binria ou ordenada, se e somente se: Todo item armazenado na subrvore esquerda de A menor que r; Todo item armazenado na subrvore direita de A maior ou igual a r; Cada subrvore de A tambm uma rvore de busca binria. Uma consequncia importante da propriedade de busca binria que a projeo de uma rvore de busca binria produz uma sequncia ordenada de todos os seus itens quando projetamos os ns no eixo X da Figura 1:

Figura 1: rvore de busca binria Simulador online de rvore binria de busca Vamos acessar o endereo a seguir para utilizarmos um simulador que apresenta a montagem de uma rvore binria de busca: http://www.cs.jhu.edu/~goodrich/dsa/trees/btree.html Operaes bsicas Para implementar uma rvore binria em C vamos desenvolver um algoritmo utilizando structs, onde cada item representar um n da rvore e armazenar um ponteiro para a subrvore da esquerda e outro ponteiro para a subrvore da direita (ns filhos). As operaes bsicas so inserir(), imprimir() e remover(). Todo novo n alocado na rvore de acordo com sua hierarquia, ou seja, o nmero 10 vai ser inserido esquerda do n 11 se este j existir na rvore.

rvore binria de busca Aula 3

Implementando uma rvore de busca binria Para comear, vamos introduzir uma nova funo chamada folha() que ter a responsabilidade de criar um novo n na rvore apontando para NULL em suas ramificaes:
noh*folha(intx){ noh*n; n=(noh*)malloc(sizeof(noh)); n>esq=NULL; n>dir=NULL; n>valor=x; returnn; }

A funo recursiva inserir(), abaixo, apresenta a utilizao de passagem de parmetros por referncia usando structs:
voidinserir(intx,noh**a) { if(vazia(*a)) *a=folha(x); elseif((*a)>valor<x) inserir(x,&(*a)>dir); elseif((*a)>valor>x) inserir(x,&(*a)>esq); }

A funo vazia() verifica se o n passado por parmetro ou no vazio, retornando True (1) ou False (0). A ltima funo importante a emordem() que apresentar todos os ns segundo o percurso em ordem estudado nas aulas anteriores. Exerccio para casa (10 pontos, em Trio) 1) Implementar o a funo de remoo em rvores de busca binria. 2) Explicar, nos comentrios do cabealho do cdigo, como a funo foi implementada e quais as maiores dificuldades encontradas. Referncias: Pereira, Silvio do Lago. Estruturas de Dados Fundamentais: Conceitos e Aplicaes. So Paulo: rica, 2008. Wikibooks. rvores binrias. Disponvel em < http://pt.wikibooks.org/wiki/Programar_ em_C/%C3%81rvores_bin%C3%A1rias>. Acesso em 10/06/2010. W. Celes e J. L. Range. rvores. Disponvel em <http://www.scribd.com/doc/ 26510953/ Estrutura-de-dados-Arvore-binaria>. Acesso em 28/07/2010.