A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Árvores AVL Algoritmos e Estruturas de Dados - IF672

Apresentações semelhantes


Apresentação em tema: "Árvores AVL Algoritmos e Estruturas de Dados - IF672"— Transcrição da apresentação:

1 Árvores AVL Algoritmos e Estruturas de Dados - IF672
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo Arrais de Souza Murilo Raphael de Souza Lira Rafael Alberto Gomes Pereira Lima Rafael Brandão Lobo Rafael Loureiro de Carvalho Tiago Carneiro Pessoa Canto Vinicius Miranda Cesar

2 balance(nó) = | altura(dir) - altura(esq) | ≤ 1
Árvore AVL Em 1962, os matemáticos Russos G.M. Adelson-Velskki e E. M. Landis descreveram procedimentos para inserção e eliminação de nós em árvores: os algoritmos de balanceamento são chamados algoritmos AVL e as árvores são chamadas árvores AVL. Uma árvore AVL é uma árvore binária de busca (ABB), auto-balenceada, construída de tal modo que a altura de sua subárvore direita difere da altura da subárvore esquerda de no máximo 1. balance(nó) = | altura(dir) - altura(esq) | ≤ 1

3 Representação do nó public class No<E> { No<E> filhoDireita; No<E> filhoEsquerda; E chave; int balance; No(E chave){ this.chave = chave; this.filhoDireita = null; this.filhoEsquerda = null; this.balance = 0; } Exemplos: No<String> no = new No<String>("Casa"); No<Integer> no = new No<Integer>(10);

4 Balanceamento Uma árvore AVL é dita balanceada quando, para cada nó da árvore, a diferença entre as alturas das suas sub-árvores (direita e esquerda) não é maior do que um. Caso a árvore não esteja balanceada é necessário seu rebalanceamento através de rotação simples ou rotação dupla. O rebalanceamento pode ser requerido para as operações de inserção e remoção de elementos.

5 Inserção Em Árvores AVL uma inserção sempre cria uma nova folha, tal fato pode alterar a altura da árvore e por conseqüência desbalancear a mesma, exigindo um rebalanceamento para restauração da propriedade AVL. Qualquer que seja a inserção em uma Árvore AVL, será necessário no máximo uma rotação para restauração do equilíbrio.

6 Rotações Há diversos casos de inserção que não requerem rotação. Caso seja necessário fazer alguma rotação, há quatro situações diferentes a considerar. Supondo que A é o nó crítico, B é o seu filho à esquerda e C seu filho à direita, temos: Balance de A Lado da inserção Sub-árvore do filho Tipo de rotação -1  esquerda de A  esquerda de B SIMPLES  +1  direita de A  direita de C direita de B DUPLA  esquerda de C A C B

7 Rotação simples para direita
Inserção dos elementos 50, 30 e 20: -2 -1 50 -1 30 20 30 20

8 Rotação simples para esquerda
Inserção dos elementos 50, 60 e 70: 2 1 50 1 60 70 60 70

9 Rotação dupla para direita (Rotação simples para esquerda + Rotação simples para direita)
Inserção dos elementos 40, 20 e 30: -1 -2 40 -1 1 30 20 20 30

10 Rotação dupla para esquerda (Rotação simples para direita + Rotação simples para esquerda)
Inserção dos elementos 50, 70 e 60: 2 1 50 -1 1 70 70 60 60

11 Rotação simples – de novo
-2 X -1 h+2 h Y c h+1 h a a b

12 Rotação simples – de novo
X c h Y h+1 a h+1 b h

13 Rotação dupla – de novo -2 X Max( h(b) , h(c) ) = h 1 h h+2 Y d h(b)
Bal(z) = -1 h h-1 Bal(z) = 0 Bal(z) = 1 -1/0/1 h h+1 Z a b c

14 Rotação dupla – de novo -2 X Max( h(b) , h(c) ) = h 1 h h+2 Y d h(b)
Bal(z) = -1 h h-1 Bal(z) = 0 Bal(z) = 1 -1 h h+1 Z a h h-1 b c

15 Rotação dupla – de novo -2 X Max( h(b) , h(c) ) = h 1 h h+2 Y d h(b)
Bal(z) = -1 h h-1 Bal(z) = 0 Bal(z) = 1 1 h h+1 Z a h-1 h b c

16 Rotação dupla – de novo -2 X Max( h(b) , h(c) ) = h 1 h h+2 Y d h(b)
Bal(z) = -1 h h-1 Bal(z) = 0 Bal(z) = 1 h h+1 Z a h h b c

17 Rotação dupla – de novo -2 X Max( h(b) , h(c) ) = h 1 h h+2 Y d h(b)
Bal(z) = -1 h h-1 Bal(z) = 0 Bal(z) = 1 -1/0/1 h h+1 Z a b c

18 Rotação dupla – de novo X d h Max( h(b) , h(c) ) = h 0/-1 0/1 Y h a
X d h Max( h(b) , h(c) ) = h 0/-1 0/1 Y h a h(b) h(c) Bal(z) = -1 h h-1 Bal(z) = 0 Bal(z) = 1 h+1 h+1 Z h / h-1 h / h-1 b c

19 Remoção Em Árvores AVL a retirada de um nó é uma operação mais complexa que a inserção e pode resultar no desbalanceamento da árvore. Em situações específicas durante uma remoção podem ser necessárias log(n) rotações para restauração da propriedade AVL(uma para cada nível da árvore).

20 O que acontece se removermos o nó 39 ???
+1 50 +1 70 38 -2 -1 -1 -1 60 -1 30 40 80 42 +1 +2 -1 45 +1 20 -1 35 40 39 75 45 -1 55 +1 65 -1 90 -1 +1 54 56 64 -1 74 77 +1 +1 42 88 99 +1 25 32 15 +1 57 76 78 89 73 17 Outras rotações são necessárias até a árvore recuperar a propriedade AVL 79 Considere a Árvore AVL acima. Ela está balanceada??? O que acontece se removermos o nó 39 ??? Nó 40 fica desbalanceado (rde) Outras rotações são necessárias até a árvore recuperar a propriedade AVL Nó 38 fica desbalanceado (rse)


Carregar ppt "Árvores AVL Algoritmos e Estruturas de Dados - IF672"

Apresentações semelhantes


Anúncios Google