Você está na página 1de 46

Estrutura de

Dados II
Conteúdo
▪ Árvores Balanceadas
− Definições
− Balanceamento estático
▪ AVL
− Balanceamento Dinâmico
− Operações
• Inserção
• Remoção
− Rotação Simples
− Rotação Dupla
2
ÁRVORES BALANCEADAS

3
Árvores Balanceadas
▪ Sucessivas operações de inserção e remoção em
uma árvore podem fazer com que existam
diferenças sensíveis entre os níveis das suas
folhas.

▪ O principal problema gerado pelo


desbalanceamento está relacionado ao
desempenho.
Árvores Balanceadas
▪ A desvantagem é que o desempenho árvore
depende da ordem em que os elementos são
inseridos.
1, 2, 3, 4, 5, 6, 7 4, 6, 2, 5, 1, 7, 3

1 4
2
2 6
3
4 1 3 5 7
5
6
7
Árvores Balanceadas
▪ Definição
− Uma árvore é denominada balanceada quando, para
qualquer nó, as suas subárvores da esquerda e direita
possuem a mesma altura

B C

D E F G
Árvores Balanceadas
▪ Balanceamento Estático
− consiste na construção de uma “nova versão” da ABB,
com base nos seguintes critérios:

• Percurso em ordem na ABB, de maneira a gerar um


vetor contendo todos os elementos da árvore
ordenados
• Criação de uma “nova” ABB a partir deste vetor,
sendo que o elemento raiz é definido como sendo
o elemento médio do vetor.
ATIVIDADE PRÁTICA

8
Atividade Prática
▪ Exercício 1: Aplique o 5
balanceamento
estático na árvore
abaixo e ilustre 2 8
graficamente
o resultado. 6 12

10 15

18
9
Atividade Prática
▪ Exercício 2: Utilizando a implementação realizada
em Laboratório de um ABB crie um método capaz
de realizar o balanceamento estático.

10
AVL

11
Árvores Balanceadas : AVL
▪ Contextualização
− conceito introduzido por dois matemáticos Adelson-
Velskii e Landis em 1962

− Uma ABB é denominada AVL quando:


• Para todos os nós da ABB, as alturas das duas
subárvores diferem no máximo de 1.
• Essa diferença é chamada de fator de
balanceamento (FB(n))
Árvores Balanceadas : AVL
▪ Como saber quando a árvore está
desbalanceada?
− subtraindo as alturas das subárvores

▪ FB(n) = Alt (SAD(n)) – Alt (SAE(n))


• em que n é um nó da ABB
• SAD é a subárvore da direita
• SAE é a subárvore da esquerda
Árvores Balanceadas : AVL
▪ Por convenção,
− FB(n)=-1
• indica que a subárvore da esquerda tem altura
maior que a subárvore da direita
− FB(n)=+1
• indica que a subárvore da direita é mais alta que a
subárvore da esquerda
− FB(n)=0
• indica que as duas subárvores possuem a mesma
altura.
Árvores Balanceadas : AVL
▪ Balanceamento Dinâmico

12

8 20

5 10 15 25

11 14 18 23
Árvores Balanceadas : AVL
▪ Balanceamento Dinâmico

+1 0

0 +1 0 -1

0 0 0 0
Árvores Balanceadas : AVL
▪ Exemplo
+6 Inserção: 1, 2, 3, 4, 5, 6 e 7
1
+5
2
+4
3
+3
4
+2
5 +1
6
0
7
ATIVIDADE PRÁTICA

18
Atividade Prática
▪ Calcule o fator de balanceamento para os nós da
ABB.
Árvores Balanceadas : AVL
▪ Exemplo

0 Inserção: 4, 2, 3, 6, 5, 1 e 7
4
0 0
2 6
0 0 0 0
1 3 5 7
Árvores Balanceadas : AVL
▪ Exemplo

-1 Inserção: 4, 1, 3, 6, 5, 2 e 7
4

+2 0
1 6

-1 0 0
3 5 7

0
2
Árvores Balanceadas : AVL
▪ Exemplo

Inserção: 4, 6, 1, 7, 5, 3 e 2.
-1
4 0
4
+2 0 Op. de balanceamento 0 0
1 6
2 6
-1 0 0 0 0 0 0
3 5 7
1 3 5 7
0
2
Árvores Balanceadas : AVL
▪ Exemplo

Inserção: 4, 6, 2 e 7.
+1 +2 0
4
4 Remover nó 2 +1 Op. de balanceamento 6
0 +1 6 0 0
2 6
0
0 7
4 7

7
Árvores Balanceadas : AVL
▪ Operações de Inserção e Remoção
− A inserção ou remoção de um nó em uma árvore AVL
pode ou não provocar seu desbalanceamento.
− Para AVB desbalanceada
• balanceamento é realizado por meio de ROTAÇÕES.
Árvores Balanceadas : AVL
▪ Tipos de Rotações
− Rotação Simples:
• Rotação a Esquerda
• Rotação a Direita

− Rotação Dupla:
• Rotação a Esquerda
• Rotação a Direita
Árvores Balanceadas : AVL
▪ Rotação Simples
− Ocorre quando o nó raiz (pai) de uma subárvore tem
FB=2 (ou -2) e tem um filho com FB=1 (ou -1)
− Este tipo de rotação ocorre quando pai e filho tem o
mesmo sinal.

− Casos
• FB pai positivo → Rotação Simples Esquerda (RSE)
• FB pai negativo → Rotação Simples Direita (RSD)
Árvores Balanceadas : AVL
▪ Rotação Simples Esquerda (RSE)

4 10

9 15

12
Árvores Balanceadas : AVL
▪ Rotação Simples Esquerda (RSE)
+2
8
0
+1
4 10

0 -1
9 15

0
12
Árvores Balanceadas : AVL
▪ Rotação Simples Esquerda (RSE)

10

8 15

4 9 12
Árvores Balanceadas : AVL
▪ Rotação Simples Direita (RSD)

4 10

2 6

3
Árvores Balanceadas : AVL
▪ Rotação Simples Direita (RSD)
-2
8
-1 0

4 10

1 0
2 6

3
Árvores Balanceadas : AVL
▪ Rotação Simples Direita (RSD)

2 8

3 6 10
Árvores Balanceadas : AVL
▪ Rotação Dupla
− Ocorre quando o nó raiz (pai) de uma subárvore tem
FB=2 (ou -2) e tem um filho com FB=1 (ou -1)
− Este tipo de rotação ocorre quando pai e filho tem
sinais opostos

− Solução
• Primeiro a rotação sobre o nó com FB=1 (ou -1) na
direção apropriada
• Em seguida, a rotação sobre o nó com FB=2 (ou -2)
na direção oposta
Árvores Balanceadas : AVL
▪ Rotação Dupla Esquerda Direita (RDED)

4 10

2 6

5
Árvores Balanceadas : AVL
▪ Rotação Dupla Esquerda Direita (RDED)
-2
8 8
+1 0

4 10 6 10

0 -1
rotação em +1
2 6 a esquerda
4

0
5 2 5
Árvores Balanceadas : AVL
▪ Rotação Dupla Esquerda Direita (RDED)

8
6

6 10
4 8

rotação em -2
4 na direção oposta
2 5 10

2 5
Árvores Balanceadas : AVL
▪ Remoção
− Os problemas são semelhantes aos das inserções
• podem ocorrer desbalanceamentos
− Existem duas situações possíveis:
• Caso 1:
–simples, quando o nó removido é uma folha ou
tem apenas 1 descendente.
• Caso 2:
–o nó removido possui as duas subárvores.
Árvores Balanceadas : AVL
▪ Remoção
− Exemplo: remover o nó 4

8
3

7 10
2 4

6 9 11
1
Árvores Balanceadas : AVL
▪ Remoção
− Exemplo: remover o nó 4

8
Rotação simples 3

7 10
2

6 9 11
1
Árvores Balanceadas : AVL
▪ Remoção
− Exemplo: remover o nó 8

8
2

7 10
1 3

6 9 11
Árvores Balanceadas : AVL
▪ Remoção
− Exemplo: remover o nó 8

7
2

6 10
1 3

9 11
ATIVIDADE PRÁTICA

42
Atividade Prática
Exercício 1: Construa uma árvore balanceada AVL,
passo-a-passo, considerando os seguintes
elementos:

50, 30, 20, 70, 40, 35, 37, 38,


10, 32, 45, 42, 25, 47, 36

Indique, quando necessário, qual rotação foi


realizada.
43
Atividade Prática
Exercício 2: Construa uma árvore balanceada AVL,
passo-a-passo, considerando os seguintes
elementos:

100, 80, 60, 40, 20, 70, 30, 50,


35, 45, 55, 75, 65, 73, 77

Indique, quando necessário, qual rotação foi


realizada.
44
Atividade Prática
▪ Exercício 3: Demonstre o processo de
balanceamento utilizando AVL para a seguinte
árvore:

45
FIM

46

Você também pode gostar