Você está na página 1de 14

ECOI08 Aula 6

Prof. Rafael Santos


Email: rafafic@gmail.com
rvore AVL

O rebalanceamento da rvore pode ser realizado


localmente se apenas uma poro da rvore foi
afetada por uma insero ou remoo de um elemento.
Um algoritmo o AVL Adelson-Velskii e Landis.

Uma rvore AVL uma rvore na qual as alturas das


subrvores esquerda e direita de cada n diferem no
mximo por um.
rvore AVL
+1
-1 +1
-1 -1
0 -1
0 0
0 +1
0
0

Os nmeros nos ns indicam os fatores de


balanceamento, que so as diferena entre as alturas das
subrvores esquerda e direita.
Na AVL todos os fatores devem ser +1, 0 ou -1
A rvore AVL no garante que a rvore esteja
perfeitamente balanceada. (Que ela possua a altura
mnima necessria para conter seus ns)
rvore AVL
Anlise
O pior caso em uma rvore AVL 44% pior
(exige 44% mais comparaes) do que a
configurao da rvore de melhor caso.
Estudos mostram que o nmero mdio de
busca est muito mais perto do melhor caso
que do pior caso, e igual a lgn + 0,25 para
n grande (Knuth)
rvore AVL

Insero
Insero da mesma forma da pesquisa
binrias
Se o fator de balanceamento de
qualquer n se tornar menor do que -1
ou maior do que 1, a rvore tem que ser
balanceada.
4 casos so possveis sendo que 2 so
simtricos.
rvore AVL - Insero (caso 1)

+1 P +2 P

0 Q +1 Q
h h+1 h
h+2

h h h
h +1
Q 0

P 0

h h h +1
rvore AVL - Insero (caso 2)
+2 P
+1 P +2 P
-1 Q
0 Q -1 Q
h
h h
+1 R
h
h h h
h +1

h-1 h
+2 P
0 R
+2 R
h -1 P 0 Q
0 Q

h-1
h h h
h h h-1
rvore AVL
Remoo
Remoo da mesma forma da pesquisa
binrias
Depois de um n ter sido removido da rvore,
os fatores de balanceamento so atualizados a
partir do ascendente do n removido at a raiz.
Para cada n nesse caminho cujo fator de
balanceamento se torne 2. Diferente da
insero balanceamento no para depois que
o primeiro P.
Existem 4 casos (mais quatro casos
simtricos)
rvore AVL Remoo (caso 1)

+2 P 0 Q
+1 P

+1 Q P 0
+1 Q
h h-1
h
h h-1 h h-1 h-1
h-1
rvore AVL Remoo (caso 2)

+2 P -1 Q
+1 P

0 Q P +1
0 Q
h h-1
h
h
h h h h h-1
rvore AVL - Remoo (caso 3)

+1 P +2 P
0 R
-1 Q -1 Q
h 0 P +1 Q
h-1
-1 R -1 R
h-1 h-1 h-2
h-1 h-1 h-1

h-1 h-2 h-1 h-2


rvore AVL - Remoo (caso 4)

+1 P +2 P
0 R
-1 Q -1 Q
h -1 P 0 Q
h-1
+1 R +1 R
h-1 h-1 h-2
h-1 h-1 h-1
h-2 h-1 h-2 h-1
rvore AVL - Exerccio

1. Crie uma rvore AVL para a entrada


10, 3, 5, 15, 19, 8, 6, 9, 7
1. Remova os ns 19, 6, 7, 5
Referncia Bibliografia

DROZDEK, Adam. Estrutura de dados e algoritmos em C++. So


Paulo: Thomson, 2002.

Você também pode gostar