Você está na página 1de 39

rvores

AVL
Centro de Inform-ca Universidade Federal de Pernambuco Sistemas de Informao Vinicius Cardoso Garcia vcg@cin.ufpe.br

2011 Vinicius Cardoso Garcia

Introduo
Pesquisas u-lizando rvores binrias de busca aumentam o desempenho em relao a busca em listas encadeadas ou vetores. No entanto, medida em que a rvore vai sendo modicada (atravs de inseres e remoes), ela pode car degenerada. rvores balanceadas visam maximizar o desempenho de buscas em rvores binrias
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

Problema
Exemplo: 50, 20, 39, 42, 40
50 20 39 42 40
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

A rvore binria pode degenerar para uma estrutura prxima a uma lista ligada, e o tempo de acesso deixa de ser logartmico.

Soluo
Procurar manter todas as folhas mais ou menos na mesma altura
PROPRIEDADE AVL: Para todo n | altura(dir) - altura(esq) | < 2
Altura(x) ! SE x =None! retorne 1 ! h1 = Altura(x.esquerda) ! h2 = Altura(x.direita) ! retorne (1+Max(h1,h2))!
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

Funo para Retornar Altura de um rvore Binria

Outro possvel problema


Exemplo: 50, 20, 10
50 20 10 Aps a insero do elemento 10, a rvore binria perde a propriedade AVL. SOLUO: Rotao.
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

Rotao Simples Direita


Insero esquerda de rvore desbalanceada esquerda (bal = -1)
50 20 10 Promover o elemento do meio atravs de um giro no senYdo horrio.
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

20 10 50

Rotao Simples Esquerda


Insero direita de rvore desbalanceada direta (bal = +1)
10 20 50 Promover o elemento do meio atravs de um giro no senYdo anY-horrio.
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

20 10 50

Fator de Balanceamento
O fator de balanceamento de um n dado pelo seu peso em relao a sua sub-rvore. Um n pode ter um fator balanceado de 1, 0, ou -1. Um n com fator de balanceamento -2 ou 2 considerado um rvore no AVL e requer um balanceamento por rotao ou dupla-rotao.

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

Clculo do Fator de Balanceamento


O fator de balanceamento pode ser dado como:
h(sub-rvore esquerda) - h(sub-rvore direita)

Ou, h(sub-rvore direita) - h(sub-rvore esquerda)


Onde h(x) a altura do n x. Essa escolha ir inuenciar no momento do balanceamento.

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

rvores AVL
rvores AVL so balanceadas Uma rvore AVL uma ABP tal que para cada n interno v de T, as alturas dos lhos de v podem diferir de no mximo 1.
44 2 17 1 32 1 48 62 2 50 1 88 78 4 3 1

An example of an AVL tree where the heights are shown next to the nodes:

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

10

rvores AVL: Exemplos


Um exemplo de uma rvore AVL com a altura de cada n
44

17

78

32

50

88

48

62

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

11

Fator de balanceamento
Guarda a diferena de altura entre SAE e SAD
44

-1

-1

17

78

32

50

88

48

62

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

12

Exemplo: rvore e seus fatores


-1

-1

0
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

13

Inseres
-1 1 0

-1

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

14

Possveis inseres rv. Balanceada


-1 1 0

-1

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

15

Possveis inseres rv. Desbal.


-1 1 0

-1

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

16

Inseres que tornam a rv. desbal.


Apenas se o n inserido for esquerda de um n com balanceamento = 1...
-1

-1

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

17

Inseres que tornam a rv. desbal.


...ou direita de um n com balanceamento = -1.
-1

-1

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

18

Tratando inseres que tornam a rvore desbalanceada

Existem quatro casos nos quais a rvore AVL torna-se desbalanceada:


Quando o balanceamento da raiz da sub-rvore era igual a 1:
Caso 1: O n inserido na SAE Caso 2: O n inserido na SAD

Quando o balanceamento da raiz da sub-rvore era igual a -1:


Caso 3: O n inserido na SAE Caso 4: O n inserido na SAD
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

19

Tratando inseres que tornam a rvore desbalanceada

Existem quatro casos nos quais a rvore AVL torna-se desbalanceada:


Quando o balanceamento da raiz da sub-rvore era igual a 1:
Caso 1: O n inserido na SAE Caso 2: O n inserido na SAD

Quando o balanceamento da raiz da sub-rvore era igual a -1:


Caso 3: O n inserido na SAE Caso 4: O n inserido na SAD
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

20

Caso 1: Raiz com bal = 1, n na SAE


1 A necessria uma rotao direita para balancear a rvore...
T3

altura n

T1

altura n

T2

altura n

?
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

21

Caso 1: Raiz com bal = 1, n na SAE


Rotao direita A B

T3

altura n
T1

altura n
T1

altura n

T2

T2

T3

altura n ?

altura n altura n

Tratando inseres que tornam a rvore desbalanceada

Existem quatro casos nos quais a rvore AVL torna-se desbalanceada:


Quando o balanceamento da raiz da sub-rvore era igual a 1:
Caso 1: O n inserido na SAE Caso 2: O n inserido na SAD

Quando o balanceamento da raiz da sub-rvore era igual a -1:


Caso 3: O n inserido na SAE Caso 4: O n inserido na SAD
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

23

Caso 2: Raiz com bal = 1, n na SAD


1 A Neste caso necessria uma dupla rotao: 1. feita uma rotao esquerda na sub-rvore enraizada em B. 2. feita uma rotao direita na sub-rvore enraizada em A.

B
T4

altura n
T1

altura n altura n -1
T2 T3

altura n -1

?
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

24

Caso 2: Raiz com bal = 1, n na SAD


1 A Neste caso necessria uma dupla rotao: 1. feita uma rotao esquerda na sub-rvore enraizada em B. 2. feita uma rotao direita na sub-rvore enraizada em A.

B
T4

altura n
T1

altura n altura n -1
T2 T3

altura n -1

?
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

25

Caso 2: Raiz com bal = 1, n na SAD


A Neste caso necessria uma dupla rotao: 1. feita uma rotao esquerda na sub-rvore enraizada em B. 2. feita uma rotao direita na sub-rvore enraizada em A.

C
T4

altura n B
T3

altura n -1

T1

T2

altura n ?

altura n -1

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

26

Caso 2: Raiz com bal = 1, n na SAD


A Neste caso necessria uma dupla rotao: 1. feita uma rotao esquerda na sub-rvore enraizada em B. 2. feita uma rotao direita na sub-rvore enraizada em A.

C
T4

altura n B
T3

altura n -1

T1

T2

altura n ?

altura n -1
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

27

Caso 2: Raiz com bal = 1, n na SAD


0 C Neste caso necessria uma dupla rotao: 1. feita uma rotao esquerda na sub-rvore enraizada em B. 2. feita uma rotao direita na sub-rvore enraizada em A.

B altura n -1

-1

T1

T2

T3

T4

altura n ?

altura n -1

altura n

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

28

Tratando inseres que tornam a rvore desbalanceada

Existem quatro casos nos quais a rvore AVL torna-se desbalanceada:


Quando o balanceamento da raiz da sub-rvore era igual a 1:
Caso 1: O n inserido na SAE Caso 2: O n inserido na SAD

Quando o balanceamento da raiz da sub-rvore era igual a -1:


Caso 3: O n inserido na SAE Caso 4: O n inserido na SAD
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

29

Caso 3: Raiz com bal = -1, n na SAE


A -1 Neste caso necessria uma dupla rotao: 1. feita uma rotao direita na sub-rvore enraizada em B. 2. feita uma rotao esquerda na sub-rvore enraizada em A.
T4

B
T1

altura n 0 C

altura n altura n -1
T2 T3

altura n -1

?
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

30

Caso 3: Raiz com bal = -1, n na SAE


A -1 Neste caso necessria uma dupla rotao: 1. feita uma rotao direita na sub-rvore enraizada em B. 2. feita uma rotao esquerda na sub-rvore enraizada em A.
T4

B
T1

altura n 0 C

altura n altura n -1
T2 T3

altura n -1

?
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

31

Caso 3: Raiz com bal = -1, n na SAE


A Neste caso necessria uma dupla rotao: 1. feita uma rotao direita na sub-rvore enraizada em B. 2. feita uma rotao esquerda na sub-rvore enraizada em A. B

C
T1

altura n altura n -1
T2

T3

T4

altura n -1 ?

altura n

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

32

Caso 3: Raiz com bal = -1, n na SAE


A Neste caso necessria uma dupla rotao: 1. feita uma rotao direita na sub-rvore enraizada em B. 2. feita uma rotao esquerda na sub-rvore enraizada em A. B

C
T1

altura n altura n -1
T2

T3

T4

altura n -1 ?

altura n
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

33

Caso 3: Raiz com bal = -1, n na SAE


0 C Neste caso necessria uma dupla rotao: 1. feita uma rotao direita na sub-rvore enraizada em B. 2. feita uma rotao esquerda na sub-rvore enraizada em A.

B altura n -1

-1

T1

T2

T3

T4

altura n ?

altura n -1

altura n

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

34

Tratando inseres que tornam a rvore desbalanceada

Existem quatro casos nos quais a rvore AVL torna-se desbalanceada:


Quando o balanceamento da raiz da sub-rvore era igual a 1:
Caso 1: O n inserido na SAE Caso 2: O n inserido na SAD

Quando o balanceamento da raiz da sub-rvore era igual a -1:


Caso 3: O n inserido na SAE Caso 4: O n inserido na SAD
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

35

Caso 4: Raiz com bal = -1, n na SAD


A -1 necessria uma rotao esquerda para balancear a rvore...

altura n

T1

altura n

T2

altura n

T3

?
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

36

Caso 4: Raiz com bal = -1, n na SAD


Rotao esquerda A B B A altura n altura n
T3

T1

altura n
T2 T3 T1

altura n ?

T2

altura n

altura n

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

37

Implementao - Operaes
Avl criar(int chave); Avl inserir(Avl a, int chave); void imprimir(Avl a); void imprimirOrdemSimetrica(Avl a); Avl remover(Avl a, int chave); Avl buscar(Avl raiz, int chave); Avl rotacaoDireita(Avl raiz); Avl rotacaoEsquerda(Avl raiz); Avl rotacaoEsquerdaDireita(Avl raiz); Avl rotacaoDireitaEsquerda(Avl raiz); int fator(Avl a); Avl balancear(Avl a); void ajustarAltura(Avl a);
Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

38

AYvidades complementares
Leitura do captulo 12 do livro do Cormen Implementar os algoritmos de rvore AVL

Algoritmos e Estrutura de Dados rvores AVL 2011 Vinicius Cardoso Garcia

39