Professional Documents
Culture Documents
5 9 0
Drzewo AVL
0
2 12
0
8 0
■ Wyszukiwanie:
◆ ponieważ drzewo AVL jest też drzewem BST, ta
operacja wygląda tak jak dla drzew BST;
■ Wstawianie:
◆ polega na wyszukaniu miejsca w drzewie, a
następnie wstawieniu elementu (jak w BST);
◆ ponieważ podczas operacji struktura drzewa zmienia
się
i może nie zostać zachowany warunek AVL
(dotyczący różnicy w wysokości poddrzew), trzeba tę
strukturę przywrócić (wymagana tzw. rotacja);
■ Usuwanie:
◆ polega na wyszukaniu elementu w drzewie a potem
jego usunięciu (patrz BST)
◆ może zajść potrzeba przywrócenia zrównoważonej
struktury drzewa (wymagana rotacja);
Rotacja:
◆ zmiana konfiguracji węzłów;
◆ celem jest przywrócenie struktury drzewa
AVL;
◆ wyróżniamy rotacje:
✦ lewe i prawe,
✦ pojedyncze i podwójne;
-1 -2
6 6
0 0
0 12 0 12
8 8
Algorytmy i struktury danych 7
Operacje na drzewie AVL
-2 -1 1
6 9 9
0 0 0
9 12 12
-1 6 8
1
0
0 12
8 0 8 6 0
α y x γ
γ β
β α
Algorytmy i struktury danych 9
Operacje na drzewie AVL
◆ 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 10
Operacje na drzewie AVL
■ Rotacja:
◆ Lewa i prawa rotacja działają symetrycznie
LeftRotate(T, y)
x y
α y x γ
RightRotate(T, x)
γ β
β α
2 4 8 2 5 9
6 9 4 6
x 7 y 7
y x Co dalej?
A C
B C A B
+1 3 -1
9 +1 3
+2
2 4 7 11 -1 2
1 6 8 10 13 1 Rotacja 2 wokół
3
-2 5 12 14
0 9
0 2 -1 Co teraz? -1
9 0 5 11
1 3 7 11 -1 2 7 10 0
13
6 8 10 13 6 8 12 14
1 3
12 14 Po rotacji 9
Algorytmy i struktury danych
wokół 5 14
Operacje na drzewie AVL
0
B -2 A
0 B
Z A -1
X
Y X Z Y
h
h+1
h h h
h+1 !
*!
Algorytmy i struktury danych 16
2. Wstawienie węzła do lewego poddrzewa
lewego następnika
+2 0
B A
+1 A B 0
Z X
X Y Y Z
h
h+
h h
h+ h *1
1
*
Algorytmy i struktury danych 17
3. Wstawienie węzła do lewego poddrzewa
prawego następnika
-1 A A 0 C -1
U
X B +1 X Y U
Z
Y Z
h h-1
h h-1 h h h
h
*!
Algorytmy i struktury danych 18
4. Wstawienie węzła do prawego poddrzewa
lewego następnika
A +1 +1 C 0 A
U
-1 B U
X Z Y X
Z Y
h h-1
h h
h-1 h h h
*
**
Algorytmy i struktury danych 19
Równoważenie drzewa AVL po
wstawieniu węzła
Przykład
P
P P
-2
-1 -2
Q Q
Q
+1
0 +1
h h
h
R
-1
h
h h h
h+1
h-
Wstawienie nowego węzła do lewego 1 h
poddrzewa węzła Q
P Q
Q R
-2 +1 0
+1
h h
Q
R h-
-1 h- 0
h 1 h h
h 1
h- h h
1 h
P P Q
-1 -2 0
Q Q P
-1 h- -1 0
h
1
h- h- h-
h-1
1 h h 1 1 h
P P Q
-1 -2 +1
Q Q P
0 h- 0 -1
h
1
h-
h h h h 1 h h
P P R
-1 -2 0
Q P Q
Q
+1 +1 0 -1
h-
h
1
R R h-
+1 +1 h- h- 2 h-
h- h-
1 1 1 1 1
h-
h- Przypadek 3 (podwójna rotacja)
2
1
P P R
-1 -2 0
Q P Q
Q
+1 +1 +1 0
h h-1
R R
-1 -1 h-2
h-1 h-1 h-1 h-1 h-1
h-2 h-2
h-1 Przypadek 4 (podwójna rotacja)
h-1