Академический Документы
Профессиональный Документы
Культура Документы
2
Introdução
3
Balanceamento
• Problema:
• Solução:
– Aplicar algum algoritmo que mantenha a árvore completa, se após uma
inclusão ou remoção a estrutura perder esta característica.
4
Balanceamento
4 12
2 6 10 14
1 3 5 7 9 11 13 16
0
Figura 1
5
Balanceamento
3 11
1 5 9 13
0 2 4 6 8 10 12 14
Figura 2
6
Balanceamento
7
Árvore Balanceada
v Subárvore
esquerda do nó v
possui altura 2 e
subárvore direita
do nó v possui
altura zero.
9
Fator de Balanceamento (FB)
10
Exemplo de Cálculo de FB
-1 -1
v
+1 +2
-1 -1
0 -1 0 0 -1
0 0
11
Rotação
12
Rotação
13
Rotação Simples à Esquerda (RSE)
• Deve ser efetuada quando a diferença das alturas h dos filhos de P é igual a
-2 e a diferença das alturas h dos filhos de FD é igual a -1.
14
Rotação Simples à Esquerda (RSE)
16
-2 30
30
16 45
-1
45
• Deve ser efetuada quando a diferença das alturas h dos filhos de P é igual
a +2 e a diferença das alturas h dos FE é igual a +1.
16
Rotação Simples à Direita (RSD)
16 - 30 - 45 - 10 - 8 - 70 - 60 - 9 - 12 - 20 - 13
30 30
+2
16 45 10 45
+2 0
10 ++
8 16
+1
• Sinais positivos árvore tem mais peso à esquerda.
8
• Dois nós desbalanceados. Tratar o primeiro deles: de cima para
0 baixo (16).
• Sinais iguais (-- ou ++) temos uma reta. Neste caso a reta
tendendo para o lado esquerdo aplicar RSD. Sentido horário.
• Nó P (16) com problema: o FE (10) torna-se pai. E o nó P (16)
torna-se filho à direita do FE (10). 17
Rotação Dupla à Esquerda (RDE)
no nó P.
18
Rotação Dupla à Esquerda (RDE)
16 - 30 - 45 - 10 - 8 - 70 - 60 - 9 - 12 - 20 - 13
30
-1
10 45
-2
0
8 16 70
0 0 +1
60
0
• Nó com problema = 45. Fator negativo verificar sinal do FD (70). Neste caso
sinal positivo.
• Sinais diferentes (+- ou -+) temos um "joelho". No exemplo, o "joelho" está
tendendo para o lado direito aplicar RDE (RSD + RSE).
• RSD vai converter o "joelho" numa reta e RSE vai balancear a árvore.
19
RDE (1a fase: aplicar RSD(70,60)
30 30
10 45 10 45
8 16 70 8 16 60
60
70
30 30
10 45 10 60
8 16 60 8 16 45 70
70
21
Rotação Dupla à Direita (RDD)
22
Rotação Dupla à Direita (RDD)
16 - 30 - 45 - 10 - 8 - 70 - 60 - 9 - 12 - 20 - 13
10 60 16 60
-1 0
+1
8 16 45 70 10 20 45 70
0
-1
9 12 20 8 12
0 -1 0
13 0 9 13
9 0 0 0 0
13
– Busca de elementos
– Remoção de elemento
26
Busca na Árvore AVL
27
Inserção na Árvore AVL
28
Remoção na Árvore AVL
• Depois de remover o nó, a altura do nó pai e de todos os nós acima deve ser atualizada.
• Caso necessário o algoritmo de rotação deve ser chamado para o nó pai e depois para
todos os nós superiores se um desses nós tiver com FB > 1.
29
Referências
30