Você está na página 1de 3

rvore Binria de Busca

http://www.icmc.usp.br/~sce182/arvbinbu.html

ndice > rvore > rvore Binria > rvore Binria de Busca

Instituto de Cincias Matemticas de So Carlos Departamento de Computao e Estatstica SCE182 - Algoritmos e Estruturas de Dados 1 Profs. Resp.: Graa Pimentel e Maria Cristina

rvore Binria de Busca


Uma rvore Binria de Busca T (ABB) ou rvore Binria de Pesquisa tal que ou T = 0 e a rvore dita vazia ou seu n raiz contm uma chave e: 1. Todas as chaves da subrvore esquerda so menores que a chave da raiz. 2. Todas as chaves da subrvore direita so maiores que a chave raiz. 3. As subrvores direita e esquerda so tambm rvores Binrias de Busca. Tabelas de Palavras reservadas de um compilador Pascal

Em algoritmo de busca a medida de eficincia dada pelo nmero de comparaes necessrias para se localizar uma chave, ou descobrir que ela no existe.

Numa lista linear com n chaves, temos que, no pior caso, faremos n comparaes. O nmero de
1 de 3 25/2/2008 20:40

rvore Binria de Busca

http://www.icmc.usp.br/~sce182/arvbinbu.html

comparaes cresce linearmente em funo do nmero de chaves. Busca binria Pesquisa realizada se informao est armazenada de forma ordenada e em sequncia (em um array). Qual a eficincia do Algoritmo de busca binria ? Para n = 8 posies, o pior caso quando precisando chegar na posio 1 ou 8. A cada diviso, desprezamos toda a poro maior ou menor que a chave.

com n comparaes 1 2 k i

chegamos posio n/2 n/4 n/2k 1

n/2i = 1 => n = 2i => i = log2n


Com busca binria obtemos a melhor eficincia possvel em array, mas, ficamos limitados representao sequencial (deslocamentos, previso de memria, etc). Podemos utilizar a rvore Binria de Busca e obteremos o mesmo desempenho anterior - desde que a altura seja mnima. a caracterstica de altura mnima que garante que estamos tomando a chave do meio da poro pesquisada !! Com rvore Binria de Busca Perfeitamente Balanceadas temos altura mnima. O nmero de comparaes ser igual a :

Para garantir a performance tima temos que garantir que a rvore seja balanceada durante a construo e que o balanceamento seja mantido em inseres e eliminaes ! Definio da Estrutura de Dados e Algoritmos:
Type Pno=^No; Tree = Pno; No=record chave: Tchave; esq, dir: Pno; End; Var raiz: Tree;

Algoritmo de Busca
Function Busca (x: Tchave; raiz: Tree;):Tree; Var achou: boolean; p: Tree; Begin

2 de 3

25/2/2008 20:40

rvore Binria de Busca

http://www.icmc.usp.br/~sce182/arvbinbu.html

p:=raiz; achou:=false; While (not achou) and (p<>nil) do If p^.chave = x Then achou:=true Else If p^.chave > x Then p:=p^.esq Else p:=p^.dir; Busca:=p; End;

Algoritmo de Busca Recursivo


Function Busca (x: Tchave; raiz: Tree;):Tree; Begin If raiz=nil Then Busca = nil Else If raiz^.chave = x Then busca:=raiz Else If raiz^.chave < x Then Busca:=Busca(x, raiz^.dir) Else Busca:=Busca(x,raiz^.esq); End;

Algoritmo de Busca: verso com sentinela - para eliminar teste duplo durante a busca.
Function Busca (x: Tchave; raiz: Tree):Tree; Var sentinela, p: Tree; Begin p:=raiz; sentinela^.chave:=x; While p^.chave <> x do If p^.chave x Then p:=p^.dir Else p:=p^.esq; Busca:=p; End;

Como fica a configurao VAZIA da ABB com sentinela??

rvore Binria

3 de 3

25/2/2008 20:40