Professional Documents
Culture Documents
Drzewa AVL
6 0
+1
5 9 0
0
2 12
0 0
8
Drzewa AVL
Drzewo AVL (1962 – Adelson-Velskii, Landis)
Drzewo AVL jest rozwinięciem drzewa BST
(z zachowaniem wszystkich jego własności);
Dla kaŜdego wierzchołka w drzewie AVL wysokości jego dwóch
poddrzew (lewego i prawego) o korzeniu w tym wierzchołku róŜnią
się co najwyŜej o 1;
Węzeł oprócz pól danych oraz lewego i prawego wskaźnika ma teŜ pole
opisujące róŜnicę wysokości lewego i prawego poddrzewa;
Z definicji wynika, Ŝe to pole moŜe mieć wartość ze zbioru {-1, 0, 1};
6
w( x) = h(LD) − h(PD) 0
+1
5 9 0
Drzewo AVL
0
2 12
0 0
8
Algorytmy i struktury danych 2
Obliczanie wag wierzchołków drzewa AVL
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 8
Operacje na drzewie AVL
W jaki sposób zrównowaŜyć
otrzymane drzewo?
-2 1 -1
6 9 8
0 0 1
9 12 12
-1 6 6
0
0
0 12
8 0 8 9 0
x y
α y x γ
γ β
β α
Algorytmy i struktury danych 10
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;
x
y
α y
x γ
β γ
α β
Algorytmy i struktury danych 11
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 +1 3
+2
9
2 4 7 11 -1 2
1 6 8 10 13 1 Rotacja 2 wokół 3
-2 5
12 14 09
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 wokół 5
Algorytmy i struktury danych 15
Operacje na drzewie AVL
Wstawianie
Po wstawieniu elementu do drzewa AVL na ogół trzeba
wykonać 1 rotację pojedynczą lub podwójną w celu jego
zrównowaŜenia;
Przypadki charakterystyczne:
1. wstawienie węzła do prawego poddrzewa prawego następnika
2. wstawienie węzła do lewego poddrzewa lewego następnika
3. wstawienie węzła do lewego poddrzewa prawego następnika
4. wstawienie węzła do prawego poddrzewa lewego następnika
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 17
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+1
h h
h+1 h *
*
Algorytmy i struktury danych 18
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 19
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 20
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-1
Wstawienie nowego węzła do lewego h
poddrzewa węzła Q
P Q
Q R
-2 +1 0
+1
h h
Q
R
-1 0 h-1
h-1 h h h
h
h-1 h h
h
Usuwanie
Po usunięciu elementu z drzewa AVL moŜe się zdarzyć,
Ŝe w celu jego zrównowaŜenia naleŜy wykonać tyle rotacji,
ile jest poziomów w drzewie;
P P Q
-1 -2 0
Q Q P
-1 -1 0
h h-1 h
P P Q
-1 -2 +1
Q Q P
0 0 -1
h h-1
h
h-1
h h h h h
P P R
-1 -2 0
Q P Q
Q
+1 +1 0 -1
h h-1
R R
+1 +1 h-2
h-1 h-1 h-1 h-1 h-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
n0=1
n h= n h-1 + n h-2 +1
h
MoŜna udowodnić, Ŝe:
h-1 PD h-2
log2(n+1) ≤ h ≤ 2 log2n LD
Liczba rotacji wynosi zatem co najwyŜej 2 log2n;
ZłoŜoność obliczeniowa równowaŜenia po usunięciu węzła: Θ(log2n)
Algorytmy i struktury danych 28
Algorytmy i struktury danych 29