Disciplina de Estrutura de Dados

Propaganda
Disciplina de Estrutura de Dados
Árvores Balanceadas (AVL)
1
Árvores Balanceadas
Uma árvore é dita balanceada quando as suas sub-árvores á
esquerda e à direita possuem a mesma altura.
A árvore que não está balanceada, define-se como degenerada.
Árvore Binária Balanceada
Árvore Binária Degenerada
Árvores Balanceadas
Desempenho de uma árvore binária
depende da ordem em que os elementos são inseridos.
1, 2, 3, 4, 5, 6, 7
3
4, 6, 2, 5, 1, 7, 3
Árvores Balanceadas – Tipos de Balanceamento
Balanceamento Estático:
Este balanceamento consiste em, depois de um certo tempo de
uso da árvore, destruir sua estrutura, guardando suas informações
em uma lista ordenada e reconstruí-la de forma balanceada.
Balanceamento Dinâmico:
Tem por objetivo reajustar os nós de uma árvore sempre que uma
inserção ou remoção provocar desbalanceamento.
Um exemplo de balanceamento dinâmico são as Árvores AVL.
Árvores AVL
Árvores AVL vem em homenagem aos matemáticos russos
Adelson-Velskii e Landism – 1962.
Uma árvore binária de pesquisa P é denominada AVL se:
Para todos nós de P, as alturas de suas duas sub-árvores
diferem no máximo de uma unidade.
130
100
80
5
110
120
120
150
130
100
200
80
110
200
150
Árvores AVL
Fator de Balanceamento (fatbal)
Para cada nó define-se um fator de balanceamento que deve ser [–1,0,1].
Fatbal = altura (sub-arvore direita) – altura (sub-árvore esquerda)
Fatbal = -1, quando a sub-árvore da esquerda é um nível mais alto que a direita.
Fatbal = 0, quando as duas sub-árvores tem a mesma altura.
Fatbal = 1, quando a sub-árvore da direita é um nível mais alto que a esquerda.
O fator de balanceamento de uma folha é sempre 0
Exemplos de cálculos de FB
+6
Inserção: 1, 2, 3, 4, 5, 6 e 7
0 Inserção: 4, 2, 3, 6, 5, 1 e 7
+5
0
+4
+3
0
0
+2
0 0
0
+1
0
-1 Inserção: 4, 1, 3, 6, 5, 2 e 7
0
+2
-1
7
0
0
0
Árvores AVL – Operação Inserção
Inserção: 4, 6, 1, 7, 5, 3 e 2.
-1
0
+2
-1
0
8
0
0
Op. de balanceamento
0
0
0
0
0 0
0
Árvores AVL – Operação de Remoção
Inserção: 4, 6, 2 e 7.
+1
Remover nodo 2
0
+1
0
9
+2
0
Op. de balanceamento
+1
0
0
0
Árvores AVL
Operações de Inserção e Remoção
As operações de inserção ou remoção de um nodo em uma árvore AVL
pode ou não provocar seu desbalanceamento.
Se a árvore AVL ficar desbalanceada, a restauração do seu balanceamento
é realizado através de ROTAÇÕES.
Existem 4 tipos de rotações
10
Rotação simples à esquerda;
Rotação simples à direita;
Rotação dupla à esquerda;
Rotação dupla à direita.
Exemplos de Rotação Simples
Suponha que nós queiramos inserir o nodo 3 na árvore inicial abaixo
-1
-2
0
8
8
4
0
0
0
4
2
-1
10
0
6
+1
4
2
10
0 Rotação a direita (nodo 8)
+1
0
2
8
0
0 0
0
6
3
10
6
0
3
3
A inserção do nodo 3 produziu um desbalanço no nodo 8 verificado pelo FB = -2 neste nodo.
Neste caso, como os sinais dos FB são os mesmos (nodo 8 com FB = -2 e nodo 4 com
FB = -1) significa que precisamos fazer apenas uma ROTAÇÃO SIMPLES.
11
Exemplo de Rotação Dupla
Suponha que queiramos inserir o nodo 5 na árvore abaixo
-2
-1
8
0
0
0
2
4
+1
10
0
6
-2
8
0
(a)
-2
10
4
0
-1
2
0
6
0
0
0
5
Observe que o nodo 8 tem FB = -2 e tem um filho com FB = +1 (sinais opostos).
Neste caso, o balanceamento é alcançado com duas rotações.
Primeiro: (a) rotação simples sobre o nodo 4 (com FB = +1) para a esquerda.
12
0
Exemplo de Rotação Dupla (continuação)
-2
-2
0
0
0
0
(b)
0
0
+1
0
0
0
Logo após da rotação a esquerda: (b) rotaciona-se o nodo 8 (FB = -2) na
direção oposta (direita neste caso).
13
Referências
Luzzardi, Paulo Roberto Gomes. Estrutura de Dados. UCPEL.
Da Silva, Rosaura E. S. Árvores AVL.
http://infovis.ucpel.tche.br/luzzardi/AVL.pdf
Simulação:
http://www.site.uottawa.ca/~stan/csi2514/applets/avl/BT.html
Download