Professional Documents
Culture Documents
AVL
Centro
de
Inform-ca
Universidade
Federal
de
Pernambuco
Sistemas
de
Informao
Vinicius
Cardoso
Garcia
vcg@cin.ufpe.br
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
20 10 50
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.
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:
10
17
78
32
50
88
48
62
11
Fator
de
balanceamento
Guarda
a
diferena
de
altura
entre
SAE
e
SAD
44
-1
-1
17
78
32
50
88
48
62
12
-1
0
Algoritmos
e
Estrutura
de
Dados
rvores
AVL
2011
Vinicius
Cardoso
Garcia
13
Inseres
-1
1
0
-1
14
-1
15
-1
16
-1
17
-1
18
19
20
altura n
T1
altura n
T2
altura n
?
Algoritmos
e
Estrutura
de
Dados
rvores
AVL
2011
Vinicius
Cardoso
Garcia
21
T3
altura
n
T1
altura
n
T1
altura n
T2
T2
T3
altura n ?
altura n altura n
23
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
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
C
T4
altura
n
B
T3
altura n -1
T1
T2
altura n ?
altura n -1
26
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
B altura n -1
-1
T1
T2
T3
T4
altura n ?
altura n -1
altura n
28
29
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
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
C
T1
altura
n
altura
n
-1
T2
T3
T4
altura n -1 ?
altura n
32
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
B altura n -1
-1
T1
T2
T3
T4
altura n ?
altura n -1
altura n
34
35
altura n
T1
altura n
T2
altura n
T3
?
Algoritmos
e
Estrutura
de
Dados
rvores
AVL
2011
Vinicius
Cardoso
Garcia
36
T1
altura
n
T2
T3
T1
altura n ?
T2
altura n
altura n
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
39