6
1 TAD – Árvore AVL ATAI

TAD – Árvore AVL

  • Upload
    todd

  • View
    46

  • Download
    2

Embed Size (px)

DESCRIPTION

TAD – Árvore AVL. ATAI. Árvore AVL. - PowerPoint PPT Presentation

Citation preview

Page 1: TAD – Árvore AVL

1

TAD – Árvore AVL

ATAI

Page 2: TAD – Árvore AVL

2

Árvore AVLAs Árvores Binárias de Pesquisa têm uma séria desvantagem que pode afectar o tempo necessário para recuperar um item armazenado. A desvantagem é que a estrutura da árvore depende da ordem em que os elementos são inseridos. Sabemos que se inserirmos os elementos já em ordem, a estrutura da árvore será igual a de uma lista encadeada e o tempo médio para recuperar uma informação da árvore aumenta.

10

60

60

50

40

30

20

20

50

40

30

10

A procura é mais rápida na árvore binária de pesquisa equilibrada/balanceada.

Árvore AVL é uma árvore binária de pesquisa equilibrada em altura. Para cada nó da árvore as alturas das respectivas subárvores esquerda e direita diferem apenas em um.

Page 3: TAD – Árvore AVL

3

Para manter o equilíbrio da árvore guardamos em cada nó um “factor de equilíbrio”, designado por balance (bal) do tipo inteiro.

bal = altura (right) - altura (left)

Como estes duas alturas diferem de pelo menos em 1, o valor de bal deve ser -1, 0 ou +1.

As operações são iguais à da árvore binária de pesquisa. Só as operações de insert and deletekey devem ser modificados. Elas devem manter o equilíbrio da árvore.

Árvore AVL - factor de equilíbrio

Page 4: TAD – Árvore AVL

4

Insert determina a localização do novo elemento e adiciona-o.

Durante a operação insert permitimos temporariamente que o valor de bal possa ser -2 e +2.

Quando isto acontece, a árvore deixa de estar equilibrada, sendo necessário uma ou duas rotações para a equilibrar de novo.

Distinguimos entre rotações simples e duplas. As rotações simples diferem entre rotação esquerda e rotação direita.

Árvore AVL - operação insert

Page 5: TAD – Árvore AVL

5

Árvore AVL - operação insert

1. Adicionar o nó como em árvore binária de pesquisa. O caminho para este nó é o caminho de pesquisa.

2. Subir no caminho de pesquisa actualizando os valores do bal dos nós, até encontrar um nó não balanceado mais perto do novo nó ( tem o valor do bal +2 ou -2). Chamar este nó o eixo.

3. A. Se não existir o eixo, a árvore continua a ser árvore AVL e podemos acabar a operação de inserção actualizando os valores do bal de todos os nós do caminho de pesquisa.

B. Se o eixo existe, então para manter a árvore AVL devemos efectuar rotação (direita, esquerda ou dupla) de modo que os valores do bal fiquem correctos e a árvore é uma árvore AVL.

Page 6: TAD – Árvore AVL

6

Árvore AVL - Tipos de rotações

Que tipo de rotação devemos fazer?

Se o bal do eixo é negativo (sub-árvore esquerda é mais comprida), então

se o bal do nó seguinte do caminho de pesquisa é negativo, então rotação para direita, se não (o bal é positivo), então rotação dupla (esquerda-direita)

Se o bal do eixo é positivo (sub-árvore direita é mais comprida), então

se o bal do nó seguinte do caminho de pesquisa é positivo, então rotação para esquerda, se não (o bal é negativo), então rotação dupla (direita-esquerda)