Professional Documents
Culture Documents
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!
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
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!