Você está na página 1de 7

rvores Binrias 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 sub-rvore esquerda so menores que a chave da raiz. 2. Todas as chaves da sub-rvore direita so maiores que a chave raiz. 3. As sub-rvores direita e esquerda so tambm rvores Binrias de Busca. Tabelas de Palavras reservadas de um compilador Java:
for case if while

else

class

private

new

switch

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.
8 3 1 9 11

16 12 18

Numa lista linear com n chaves, temos que, no pior caso far n comparaes. O nmero de comparaes cresce linearmente em funo do nmero de chaves. Um percurso em-ordem nessa rvore resulta na seqncia de valores em ordem crescente. Uma rvore de busca criada a partir de um conjunto de valores no nica: o resultado depende da seqncia de insero dos dados. A grande utilidade da rvore binria de busca armazenar dados contra os quais outros dados so freqentemente verificados (busca!) Uma rvore de busca binria dinmica e pode sofrer alteraes (inseres e remoes de ns) aps ter sido criada

Busca Binria
Pesquisa realizada se informao est armazenada de forma ordenada e em seqncia (em um vetor).

Qual a eficincia do Algoritmo de busca binria? - Para n = 8 posies, o pior caso quando precisamos chegar posio 1 ou 8. - A cada diviso, desprezamos toda a poro maior ou menor que a chave (posio do meio a cada iterao). Com busca binria obtemos a melhor eficincia possvel em um vetor, mas ficamos limitados representao seqencial (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 Balanceada temos altura mnima. O nmero de comparaes ser igual a: hmin= menor inteiro maior ou igual a log2(n+1) Para garantir o desempenho timo temos que garantir que a rvore seja balanceada durante a construo e que o balanceamento seja mantido em inseres e eliminaes!

Operaes em uma rvore Binria de Busca


As operaes bsicas em uma rvore Binria de Busca so: insero remoo busca

Insero
Passos do algoritmo de insero: Procure um local para inserir o novo n, comeando a procura a partir do n-raiz; Para cada n-raiz de uma sub-rvore, compare; se o novo n possui um valor menor do que o valor n raiz (vai para sub-rvore esquerda), ou se o valor maior que o valor no n-raiz (vai para sub-rvore direita); Se uma referncia (filho esquerdo/direito de um n raiz) nula atingida, coloque o novo n como sendo filho do n-raiz.

Exemplo Para entender o algoritmo considere a insero do conjunto de nmeros, na seqncia: 17, 99, 13, 1, 3, 100, 400 1. No incio a ABB est vazia! raiz

2. O nmero 17 ser inserido tornando-se o n raiz; Erro!

raiz
17

3. A insero do 99 inicia-se na raiz. Compara-se 99 com 17. Como 99 > 17, 99 deve ser colocado na sub-rvore direita do n contendo 17 (sub-rvore direita, inicialmente, nula);

raiz

17

99

4. A insero do 13 inicia-se na raiz. Compara-se 13 com 17. Como 13 < 17, 13 deve ser colocado na sub-rvore esquerda do n contendo 17. J que o n 17 no possui descendente esquerdo, 13 inserido na rvore nessa posio.

raiz
13

17 99

5. Para inserir o valor 1, repete-se o procedimento. 1<17, ento ser inserido na sub-rvore esquerda. Chegando nela, encontra-se o n 13, 1<13, ento ele ser inserido na sub-rvore esquerda de 13.
1

raiz
13

17

99

6. Para inserir o valor 3, repete-se o procedimento. 3<17, ento ser inserido na sub-rvore esquerda. Chegando nela, encontra-se o n 13, 3<13. Chegando sub-rvore esquerda encontra-se o n 1, 3>1, ento ele ser inserido na sub-rvore esquerda de 13.

raiz
13

17

99

7. Repete-se o procedimento para inserir o elemento 100: 100 > 17 (vai para a direita) e 100 > 99 (vai para a direita);

raiz
13

17

99

100

8. Repete-se o procedimento para inserir o elemento 400: 400 > 17 (vai para a direita) 400 > 99 (vai para a direita) 400 > 100 (vai para a direita)
1

raiz
13

17

99

100

400

Busca
Passos do algoritmo de busca 1. Comece a busca a partir do n-raiz; 2. Para cada n-raiz de uma sub-rvore compare: Se o valor procurado menor que o valor no n-raiz (continua pela sub-rvore esquerda), ou se o valor maior que o valor no n-raiz (sub-rvore direita); Caso o n contendo o valor pesquisado seja encontrado, retorne o n; caso contrrio retorne nulo. Por exemplo, para encontrar a chave 3, o caminho de busca representado a seguir: raiz
13 17

99

1 Encontrou o n

100 3

400

Exerccios ____________________________________________________________ 
1. Implemente o mtodo de insero para a rvore de Busca Binria, que armazene valores inteiros. 2. Implemente o mtodo que realiza a busca de um elemento dentro de uma rvore de Busca Binria. Obs: Para os mtodos pedidos, faa a implementao no modo iterativo e recursivo!

Remoo
Para a remoo de um n em uma rvore binria, devem ser considerados trs casos: Caso 1: o n folha O n pode ser retirado sem problema; Caso 2: o n possui uma sub-rvore (esq./dir.) O n-raiz da sub-rvore (esq./dir.) ocupa o lugar do n retirado; Caso 3: o n possui duas sub-rvores O n contendo o menor valor da sub-rvore direita pode ocupar o lugar; ou o maior valor da sub-rvore esquerda pode ocupar o lugar

Exemplos
Caso 1: Remoo do n 1 Ele pode ser removido sem problema, pois no requer ajustes posteriores. Os ns 30, 80 e 100 tambm podem ser removidos sem problemas!
1

raiz
13

40

60

30

90

80

100

Caso 2: Remoo do n 60 Como ele possui apenas a sub-rvore direita, o n contendo o valor 90 pode ocupar o lugar do n removido. raiz
13 40

60

30

90

80

100

Caso 3: Remoo do n 40 Neste caso, existem 2 opes: - O n com valor 30 pode ocupar o lugar do n-raiz, ou - O n com valor 60 pode ocupar o lugar do n-raiz..
1

raiz
13

40

60

30

90

80

100

Este caso tambm se aplica ao n 90: - O n com valor 80 pode ocupar o lugar do n-raiz, ou - O n com valor 100 pode ocupar o lugar do n-raiz.
1

raiz
13

40

60

30

90

80

100

Importante: Uma vez definida a regra de escolha do n substituto, ela deve ser a mesma para todas as operaes de remoo!

Custo da busca em ABB


Pior caso: nmero de passos determinado pela altura da rvore. A altura da rvore de Busca Binria depende da seqncia de insero das chaves. Considere, por exemplo, o que acontece se uma seqncia ordenada de chaves inserida. Seria possvel gerar uma rvore balanceada com essa mesma seqncia, se ela fosse conhecida a priori. A busca pode ser considerada eficiente se a rvore estiver razoavelmente balanceada.