algoritmos e estrutura de dados · Árvoresavl 1....

67
Algoritmos e Estrutura de Dados Fabrício Olivetti de França 02 de Fevereiro de 2019

Upload: others

Post on 04-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Algoritmos e Estrutura de Dados

Fabrício Olivetti de França

02 de Fevereiro de 2019

Page 2: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Topics

1. Árvores Balanceadas

1

Page 3: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores Balanceadas

Page 4: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores Binárias Desbalanceadas

Vamos adicionar os elementos 1, 2, 3, 4, 5, 6, 7 nessa ordem em umaárvore binária.

2

Page 5: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores Binárias Desbalanceadas

1

2

3

4

5

6

7

3

Page 6: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores Binárias Desbalanceadas

A busca nessa árvore terá o mesmo custo assintótico que a buscasequencial em uma lista linear.

4

Page 7: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores Binárias Desbalanceadas

Da mesma forma, vamos adicionar os elementos na ordem reversa!

5

Page 8: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores Binárias Desbalanceadas

7

6

5

4

3

2

1

6

Page 9: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores Binárias Desbalanceadas

Finalmente, adicionem na ordem 7, 4, 1, 3, 2, 5, 6.

7

Page 10: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores Binárias Desbalanceadas

7

4

1

3

2

5

6

8

Page 11: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores Binárias Desbalanceadas

Um pouco melhor, mas ainda distante do que gostaríamos!

9

Page 12: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores Binárias Desbalanceadas

As árvores binárias de busca possuem casos degenerados com alturaigual a n − 1.

Nesses casos, as operações tem complexidade O(n) no pior caso.

10

Page 13: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores Binárias Desbalanceadas

Uma árvore binária ótima é aquela que minimiza sua altura, ou seja,⌊log n+ 1⌋.

11

Page 14: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores Balanceadas

Uma árvore balanceada é uma árvore que automaticamente ajusta adisposição de seus nós para manter uma altura assintótica deO(log n).

12

Page 15: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Exercício

A seguinte árvore está balanceada?

4

2

1 3

6

5 7

13

Page 16: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Exercício

A seguinte árvore está balanceada?

1

2

3

4

5

6

14

Page 17: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Exercício

A seguinte árvore está balanceada?

4

2

1 3

5

15

Page 18: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores Balanceadas

• Árvores AVL (Adelson-Velskii e Landis).• Árvores Rubro-Negra.• Árvores Splay.• Árvores-B.

16

Page 19: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores AVL

Árvore Balanceada dinâmica (se torna balanceada no momento dainserção/remoção).

17

Page 20: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Árvores AVL

1. Condição de balanceamento é de que a altura das sub-árvoresde cada nó pode diferir em, no máximo, 1 unidade.

2. Toda sub-árvore é uma árvore AVL.

18

Page 21: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Exercício

Essa é uma árvore AVL?

5

2

1 4

3

8

7

19

Page 22: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Exercício

Essa é uma árvore AVL?

7

2

1 4

3 5

8

20

Page 23: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Altura da AVL

Assumindo n(h) como o número mínimo de nós internos em umaárvore AVL de altura h.

21

Page 24: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Altura da AVL

Temos que n(0) = 1, n(1) = 2

22

Page 25: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Altura da AVL

Para h > 1 temos o nós raíz acrescido dos nós da árvore com alturah − 1 e h − 2 (estamos verificando o mínimo de nós).

n(h) = 1+ n(h − 1) + n(h − 2)

23

Page 26: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Altura da AVL

Sabemos que n(h − 1) > n(h − 2) e, portanto, n(h) > 2n(h − 2),com isso temos que:

n(h) > 2n(h − 2) > 4n(h − 4) > 8n(h − 6) > . . . > 2in(h − 2i)

24

Page 27: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Altura da AVL

Fazendo 2i = h temos:

n(h) > 2h/2n(0) = 2h/2

25

Page 28: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Altura da AVL

Resolvendo temos:

h < 2 log n(h) = O(logn)

26

Page 29: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Struct da árvore AVL

Vamos alterar um pouco nossa estrutura de árvore para conterinformação da altura do nó:

“‘C typedef struct tree tree;

struct tree { TREE_TYPE x; int height; struct tree * left; struct tree *right; };

27

Page 30: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Inserção na AVL

A inserção ocorre de forma similar a árvore binária de busca:

tree * insert (tree * t, tree * node) {

if (t==NULL) return node;if (node->x < t->x)

t->left = insert(t->left , node);else if (node->x > t->x)

t->right = insert(t->right, node);t->height = MAX( height(t->left), height(t->right) )

+ 1;

return t;}

28

Page 31: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Inserção na AVL

O rebalanceamento ocorre logo após uma chamada recursiva deinsert, levando a 4 casos (na verdade dois casos, e os outros doissimétricos):

1. Esquerda-esquerda: o nó foi inserido a esquerda do filhoesquerdo do nó atual.

2. Direita-direita: o nó foi inserido a direita do filho direito do nóatual.

3. Esquerda-direita: o nó foi inserido a direita do filho esquerdodo nó atual.

4. Direita-esquerda: o nó foi inserido a esquerda do filho direitodo nó atual.

29

Page 32: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Esquerda-esquerda

Basta fazer uma rotação para a direita utilizando o filho da esquerdacomo pivô:

Figura 1: FONTE:https://medium.com/@randerson112358/avl-trees-a7b4f1fa2d1a 30

Page 33: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Esquerda-esquerda

Basta fazer uma rotação para a direita utilizando o filho da esquerdacomo pivô:

Figura 2: FONTE:https://medium.com/@randerson112358/avl-trees-a7b4f1fa2d1a 31

Page 34: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Direita-direita

Basta fazer uma rotação para a esquerda utilizando o filho da direitacomo pivô:

Figura 3: FONTE:https://medium.com/@randerson112358/avl-trees-a7b4f1fa2d1a 32

Page 35: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Direita-direita

Basta fazer uma rotação para a esquerda utilizando o filho da direitacomo pivô:

Figura 4: FONTE:https://medium.com/@randerson112358/avl-trees-a7b4f1fa2d1a 33

Page 36: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Esquerda-direita

Figura 5: FONTE:https://medium.com/@randerson112358/avl-trees-a7b4f1fa2d1a

34

Page 37: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Esquerda-direita

Primeiro fazemos uma rotação para a esquerda:

Figura 6: FONTE:https://medium.com/@randerson112358/avl-trees-a7b4f1fa2d1a

35

Page 38: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Esquerda-direita

Em seguida uma rotação para a direita:

Figura 7: FONTE:https://medium.com/@randerson112358/avl-trees-a7b4f1fa2d1a

36

Page 39: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Direita-esquerda

Figura 8: FONTE:https://medium.com/@randerson112358/avl-trees-a7b4f1fa2d1a

37

Page 40: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Direita-esquerda

Primeiro fazemos uma rotação para a direita:

Figura 9: FONTE:https://medium.com/@randerson112358/avl-trees-a7b4f1fa2d1a

38

Page 41: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Direita-esquerda

Em seguida uma rotação para a esquerda:

Figura 10: FONTE:https://medium.com/@randerson112358/avl-trees-a7b4f1fa2d1a

39

Page 42: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Inserção na AVL

Dessa forma temos que modificar a inserção para realizar asrotações necessárias.

40

Page 43: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Inserção na AVL

tree * insert (tree * t, tree * node) {

if (t==NULL) return node;

if (node->x < t->x){t->left = insert(t->left , node);if (height(t->left) - height(t->right) == 2){

if (node->x < t->left->x) t = left_left(t);else t = left_right(t);

}}

41

Page 44: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Inserção na AVL

else if (node->x > t->x) {t->right = insert(t->right, node);if (height(t->right) - height(t->left) == 2){

if (node->x > t->right->x) t = right_right(t);else t = right_left(t);

}}

t->height = calc_height(t);

return t;}

42

Page 45: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Rotação para a Direita

tree * left_left( tree * root ) {tree * pivot = root->left;root->left = pivot->right;pivot->right = root;

root->height = calc_height(root);pivot->height = calc_height(pivot);

return pivot;}

43

Page 46: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Rotação para a Esquerda

tree * right_right( tree * root ) {tree * pivot = root->right;root->right = pivot->left;pivot->left = root;

root->height = calc_height(root);pivot->height = calc_height(pivot);

return pivot;}

44

Page 47: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Rotação Esquerda-Direita

tree * left_right( tree * t ) {t->left = right_right( t->left );return left_left( t );

}

45

Page 48: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Rotação Direita-Esquerda

tree * right_left( tree * t ) {t->right = left_left( t->right );return right_right( t );

}

46

Page 49: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

Vamos adicionar nós em uma AVL na ordem 7, 4, 1, 3, 2, 5, 6.

47

Page 50: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

(7,0)

48

Page 51: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

(7,1)

(4,0)

49

Page 52: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

(7,2)

(4,1)

(1,0)

50

Page 53: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

(7,2)

(4,1)

(1,0)

51

Page 54: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

Rotação para direita:

(4,1)

(1,0) (7,0)

52

Page 55: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

(4,2)

(1,1)

(3,0)

(7,0)

53

Page 56: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

(4,3)

(1,2)

(3,1)

(2,0)

(7,0)

54

Page 57: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

Rotaciona filho direita para direita:

(4,3)

(1,2)

(2,1)

(3,0)

(7,0)

55

Page 58: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

Rotaciona para esquerda:

(4,2)

(2,1)

(1,0) (3,0)

(7,0)

56

Page 59: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

(4,2)

(2,1)

(1,0) (3,0)

(7,1)

(5,0)

57

Page 60: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

(4,3)

(2,1)

(1,0) (3,0)

(7,2)

(5,1)

(6,0)

58

Page 61: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

Rotaciona filho da esquerda para esquerda:

(4,3)

(2,1)

(1,0) (3,0)

(7,2)

(6,1)

(5,0)

59

Page 62: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

Rotaciona para direita:

(4,2)

(2,1)

(1,0) (3,0)

(6,1)

(5,0) (7,0)

60

Page 63: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Passo a passo

Árvore de 7 nós com altura 2.

(4,2)

(2,1)

(1,0) (3,0)

(6,1)

(5,0) (7,0)

61

Page 64: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Vantagens da AVL

• Busca é sempre O(log n) pois a árvore está sempre balanceada.• Inserções e Remoções são sempre O(log n).• O balanceamento adiciona um fator constante nos custos dasoperações.

62

Page 65: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Desvantagens da AVL

• Operações com custo assintótico baixo, mas ainda assim quecustam tempo computacional.

• O fator constante da remoção pode ser grande demais.

63

Page 66: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Outras árvores balanceadas

• Árvore Rubro-Negra: necessita apenas uma rotação poroperação, mas não tão balanceada do que a AVL.

• Árvores-B: geralmente utilizada para grandes quantidades dedados ou quando esses residem em disco.

• Splay: atualiza o balanceamento da árvore durante o acesso aoelemento, operações amortizadas O(log n).

64

Page 67: Algoritmos e Estrutura de Dados · ÁrvoresAVL 1. Condiçãodebalanceamentoédequeaalturadassub-árvores decadanópodediferirem,nomáximo,1unidade. Exercício EssaéumaárvoreAVL?

Próxima Aula

Aprenderemos sobre algoritmos de ordenação para estruturaslineares.

65