Professional Documents
Culture Documents
B
a) K b) B c)
D
B P K
K
D M R D P M
M R P
0 1 2 3 4 5 6 7 8 9
4
0 1 2 3 4 5 6 7 8 9
1 7
0 1 2 3 4 5 6 7 8 9
0 2 5 8
3 6 9
0 1 2 3 4 5
6 7 8 9
Algorytmy i struktury danych 7
Techniki równoważenia drzew BST
UtwórzWinorośl (root, n ) {
tmp=root;
while ( tmp != 0 )
if ( tmp ma lewy następnik) {
obróć następnik w prawo wokół tmp;
ustaw tmp na następnik, który stał się
poprzednikiem;
}
else
ustaw tmp na jego prawy następnik;
}
15 5 20 10 25
25
20 23 5 15 23 30
15
25
20 30
23 28 40
28 10 23 28 40
25
30 5 15
28
winorośl: n=9 drzewo zrównoważone
m=23-1=7 30 40
n-m=9-7=2
40
Algorytmy i struktury danych 13
Techniki równoważenia drzew BST
( 2 log2 ( n +1 ) −1 − 1 ) + ... + 15 + 7 + 3 + 1 =
log 2 ( n +1 ) −1
q n −1
= ∑( 2
i =1
i
− 1 ) = n − log 2 ( n + 1 ) Sn = a1
q −1
Idea:
Przy sięganiu do elementu następuje korekta
struktury drzewa poprzez:
a) pojedynczą rotację (wokół poprzednika)
b) przesunięcie elementu do korzenia
α y x γ
γ β
β α
Algorytmy i struktury danych 18
Rotacja
◆ Prawa rotacja (lub „rotacja w prawo”) węzła x wokół
węzła y:
✦ Polega na obrocie węzła x wokół wyróżnionego węzła y
zgodnie z ruchem wskazówek zegara;
✦ W wyniku rotacji węzeł x staje się nowym korzeniem
poddrzewa, węzeł y zostaje jego prawym synem, a
prawy syn węzła x zostaje lewym synem węzła y;
✦ Można ją wykonać, jeżeli lewy syn węzła x nie jest
NULL;
y x
x γ α y
β γ
α β
Algorytmy i struktury danych 19
Techniki równoważenia drzew BST
P P
F Q D Q
D H A F
A E E H
P P D
F Q D Q A P
D H A F F Q
A E E H E H
Ukosowanie (1985)
Jest to modyfikacja strategii naprawiania drzewa poprzez
przenoszenie do korzenia.
Korekta struktury drzewa następuje poprzez stosowanie
pojedynczych rotacji parami, w kolejności zależnej od
powiązania dziecka, rodzica i rodzica rodzica.
Wyróżnia się trzy przypadki (dostęp do węzła R, którego
rodzicem jest Q, którego z kolei rodzicem jest P:
• Rodzic Q węzła R jest korzeniem.
• Układ jednorodny: węzeł R jest lewym dzieckiem
Q, zaś Q jest lewym dzieckiem P (lub kiedy w obu
relacjach chodzi o prawe dziecko).
• Układ niejednorodny: węzeł R jest lewym
dzieckiem Q, zaś Q jest prawym dzieckiem P (lub
kiedy R jest prawym dzieckiem, natomiast Q
lewym).
Algorytmy i struktury danych 22
Techniki równoważenia drzew BST
B R A Q
A C C R
K Q F P A K
F L A G L Q G P
A G L Q
K Q N Q K P
A N K O A M O Q
M O A M
N Q N Q A N
K O E O I P
I L A I F K O Q
E J F K J L
E K
A N E N
I P
A I L P
F K O Q
F J O Q
J L
UWAGA
Niezależnie od metody każdy liść odwiedzany jest dokładnie jeden raz
(i w tej samej kolejności)
Algorytmy i struktury danych 33
Binarne drzewa wyrażeń
(preorder):
* – 2 3 + 4 5 = -9
2 3 4 5
✦przyrostkową
(postorder):
2 3 – 4 5 + * = -9
(preorder):
– 2 + * 3 4 5 =
* 5 -15
✦przyrostkową
(postorder):
3 4 2 3 4 * 5 + – =
-15