Professional Documents
Culture Documents
de Dados II
Árvores - AVL
Árvore Balanceada
• Uma árvore binária balanceada é aquela em que, para
qualquer nó, suas sub-árvores esquerda e direita têm a
mesma altura.
Árvore AVL
• Uma árvore binária de busca é considerada balanceada
quando, para cada nó, as alturas de suas sub-árvores
esquerda e direita diferem de, no máximo, 1.
• Essa diferença é chamada fator de balanceamento, ou
FB(n).
Introdução
(0) (-1)
5 5 B
(0)
2 novo nó inserido
Quem é A e quem é B?
Inserção Balanceada
A A
(+2) B
10 10
B 20
B A
(+1)
20
20 10 30
30 (0)
30
Rotação Simples à Direita
A->esq = B->dir;
B->dir = A;
A A
(-2) B
10 10
5
B A
(-1)
B
5 10
5 2
(0)
2 2
Inserção - Exercício
A
3 (-2)
B
2 (-1)
1 (0)
1 3
1 3
para re-equilibrar?
5
Inserção - Exercício
O resultado da rotação à esquerda fica...
1 4
3 5
A
2
Mas quando o 6 é inserido o resultado fica...
B
1 4
1 3 5
B->esq = A;
6
4
2 5
1 3 6
Inserção - Exercício
4
2 5
1 3 6
2 5
2 6
1 3 5 7
Rotação Dupla
A A Aux
20
20 15
B
Aux A
10 15 B 10 20
Aux B
15 10
Rotação Dupla à Direita
A
20 A 20
Aux
B Aux
25 25
30 A
B B
30 20 30
Aux 25
Rotação Dupla - Exemplo
2 6
1 3 5 7
2 6
1 3 5 7
16
2 6
Aux
1 5 A 15
3 7 7
B 16 15 7 16
15 Aux 16
2 6
1 3 5 15
7 16
4 B->esq = Aux->dir;
A
Aux->dir = B;
2 6
B
7
1 3 5 15
Aux 7 15
16
14 16
14
4
A->dir = Aux->esq;
A Aux->esq = A;
2 6
Aux 7 Aux
1 3 5 7
B 6 15
15
5 14 16
14 16
2 7
1 3 6 15
5 14 16