O Algoritmo DSW
Foi idealizado por Colin Day e melhorado por
Quentin F. Stout e Bette L Warren.
O algoritmo DSW (2 passos)
1. Transfigura uma rvore binria arbitrria em uma
rvore parecida com lista ligada (espinha dorsal).
2. Ento, essa rvore alongada transformada em
uma srie de passes em uma rvore perfeitamente
balanceada, girando repetidamente cada segundo
n da espinha dorsal ao redor de seu ascendente.
Balanceando uma rvore binria
O Algoritmo DSW
O essencial para as transformaes de
rvores nesse algoritmo a rotao.
H dois tipos de rotao simtricas
A esquerda
A direita.
Balanceando uma rvore binria
O Algoritmo DSW
A rotao direita do n Ch com relao ao seu ascendente
Par realizada de acordo com o seguinte algoritmo:
Gr Gr
Par Ch
Ch R P Par
P Q Q R
Balanceando uma rvore binria
createBackbone(root, n)
tmp = root;
while (tmp != 0)
if tmp tem um filho esquerdo
gire esse filho ao redor de tmp;
ajuste tmp para o filho que se tornou o ascendente;
else
ajuste tmp para o filho direito;
Balanceando uma rvore binria
createPerfectTree(n)
m = 2 lg( n 1) 1 ;
faa n-m rotaes comeando do topo da espinha dorsal;
while (m>1)
m = m/2;
faa m rotaes comeando do topo da espinha dorsal;
Balanceando uma rvore binria
Exerccio
Crie uma arvore binria de pesquisa
balanceada utilizando o algoritmo
baseado na tcnica binria de busca.
5, 10, 20, 30, 25, 28, 23, 40 ,15
Crie uma arvore binria de pesquisa
balanceada utilizando o algoritmo DSW.
5, 1, 9, 8, 7, 0, 2, 3, 4, 6
Referncia Bibliografia