Вы находитесь на странице: 1из 29

Algorytmy i struktury danych

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

 Dla kaŜdego wierzchołka drzewa x współczynnik zrównowaŜenia w(x)


ma postać
w( x) = h(LD) - h(PD),
gdzie LD i PD są odpowiednio lewym i prawym poddrzewem
o korzeniu x; -1
H
Drzewo BST jest drzewem AVL
 +2
C M
dla kaŜdego wierzchołka x: 0 +1
w(x) ∈{-1, 0, +1} A -1
J
W jakiej kolejności dodawano poszczególne
wartości do drzewa? 0
K
Algorytmy i struktury danych 3
Operacje na drzewie 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);

Algorytmy i struktury danych 4


Operacje na drzewie AVL
0 6
Drzewo wyjściowe
Dodajemy węzeł z wartością 3
+1 0
5 +1
9
6
0 0
2 +2
0 12 0
8 5 9
Jak przywrócić równowagę? -1 0
2 0
12
8
0
drzewo z nowym węzłem 3

Algorytmy i struktury danych 5


Operacje na drzewie AVL

 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);

Algorytmy i struktury danych 6


Operacje na drzewie AVL

Rotacja:
 zmiana konfiguracji węzłów;
 celem jest przywrócenie struktury drzewa AVL;
 wyróŜniamy rotacje:
 lewe i prawe,
 pojedyncze i podwójne;

Algorytmy i struktury danych 7


Operacje na drzewie AVL

 Usuwanie – niespełniony warunek AVL


 Usunięcie elementu z drzewa BST moŜe zmniejszyć
wysokość poddrzewa (wymagana rotacja)!

-1 -2
6 6

0 W jaki sposób zrównowaŜyć


0 otrzymane drzewo? 0
5 9 9

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

Algorytmy i struktury danych 9


Operacje na drzewie AVL
 Lewa rotacja (lub „rotacja w lewo”) węzła y wokół węzła x
 Polega na obrocie węzła y wokół wyróŜnionego węzła x
przeciwnie do ruchu wskazówek zegara;
 W wyniku rotacji węzeł y staje się nowym korzeniem
poddrzewa, węzeł x zostaje jego lewym synem, a lewy syn
węzła y zostaje prawym synem węzła x;
 MoŜna ją wykonać, jeŜeli prawy syn węzła y nie jest NULL;

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)

γ β
β α

Algorytmy i struktury danych 12


Operacje na drzewie AVL
 Przykład – rotacja pojedyncza 7 wokół 5
 Wynik: warunek AVL spełniony
3 3
0
1 5 -2 1 7
2 4 7 2 5 9
6 9 4 6 8
8
x y
y x
A C
B C A B

Algorytmy i struktury danych 13


Operacje na drzewie AVL
 Przykład – rotacja pojedyncza 8 wokół 5
 Wynik: warunek AVL niespełniony
3 3
+2
1 5 -2 1 8

2 4 8 2 5 9

6 9 4 6
x 7 y 7
y x Co dalej?
A C
B C A B

Algorytmy i struktury danych 14


Operacje na drzewie AVL
 Przykład – rotacja podwójna
 Wynik: warunek AVL spełniony
-1 5 -1 5

+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

Algorytmy i struktury danych 16


1. Wstawienie węzła do prawego poddrzewa prawego następnika

 Korekta: rotacja lewa węzła A wokół B

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

 Korekta: rotacja prawa węzła A wokół B

+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

 Korekta: rotacja lewa węzła B wokół A i prawa węzła B wokół C

+2 Stan po pierwszej rotacji? 0


C B

-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

 Korekta: Rotacja prawa węzła B wokół A i lewa węzła B wokół C

Stan po pierwszej rotacji? 0


C -2 B

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

Algorytmy i struktury danych 21


RównowaŜenie drzewa AVL po wstawieniu węzła
Przykład (cd.)
P R
-2 P 0
-2

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

Podwójna rotacja węzła R: wokół węzła Q i wokół węzła P


Algorytmy i struktury danych 22
Operacje na drzewie AVL

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;

Algorytmy i struktury danych 23


RównowaŜenie drzewa AVL po usunięciu węzła
Przykład

P P Q
-1 -2 0

Q Q P
-1 -1 0
h h-1 h

h-1 h-1 h-1 h-1


h h

Przypadek 1 (pojedyncza rotacja)


Algorytmy i struktury danych 24
RównowaŜenie drzewa AVL po usunięciu węzła
Przykład

P P Q
-1 -2 +1

Q Q P
0 0 -1
h h-1
h

h-1
h h h h h

Przypadek 2 (pojedyncza rotacja)


Algorytmy i struktury danych 25
RównowaŜenie drzewa AVL po usunięciu węzła
Przykład

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

h-2 Przypadek 3 (podwójna rotacja)


h-1

Algorytmy i struktury danych 26


RównowaŜenie drzewa AVL po usunięciu węzła
Przykład

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 Przypadek 4 (podwójna rotacja)


h-1 h-1

Algorytmy i struktury danych 27


Operacje na drzewie AVL
 Koszt operacji usunięcia węzła w drzewie AVL
 Rotacje działają w czasie O(1)
 Zmieniają się tylko wartości wskaźników; pozostałe pola węzłów nie są
zmieniane;
 Jaka jest minimalna liczba wierzchołków n w drzewie AVL o wysokości h?

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

Вам также может понравиться

  • Zadanie Laboratoryjne
    Zadanie Laboratoryjne
    Документ1 страница
    Zadanie Laboratoryjne
    api-26356906
    Оценок пока нет
  • cw4 Paszzynski
    cw4 Paszzynski
    Документ4 страницы
    cw4 Paszzynski
    api-26356906
    Оценок пока нет
  • Plan Implementacji
    Plan Implementacji
    Документ2 страницы
    Plan Implementacji
    api-26356906
    Оценок пока нет
  • Gramatyka Jezyka Angielskiego
    Gramatyka Jezyka Angielskiego
    Документ164 страницы
    Gramatyka Jezyka Angielskiego
    api-26356906
    100% (1)
  • Zadanie Lab-Sieci Kolejkowe
    Zadanie Lab-Sieci Kolejkowe
    Документ3 страницы
    Zadanie Lab-Sieci Kolejkowe
    api-26356906
    Оценок пока нет
  • Prezentacja 1
    Prezentacja 1
    Документ18 страниц
    Prezentacja 1
    api-26356906
    Оценок пока нет
  • Or Wyklad 5
    Or Wyklad 5
    Документ9 страниц
    Or Wyklad 5
    api-26356906
    Оценок пока нет
  • Paszynski I6B2S1 ORR Babelkowe
    Paszynski I6B2S1 ORR Babelkowe
    Документ23 страницы
    Paszynski I6B2S1 ORR Babelkowe
    api-26356906
    100% (1)
  • Przykładowe Pytania Testowe
    Przykładowe Pytania Testowe
    Документ1 страница
    Przykładowe Pytania Testowe
    api-26356906
    Оценок пока нет
  • cw5 Paszynski
    cw5 Paszynski
    Документ5 страниц
    cw5 Paszynski
    api-26356906
    Оценок пока нет
  • Or Wyklad 4b
    Or Wyklad 4b
    Документ19 страниц
    Or Wyklad 4b
    api-26356906
    Оценок пока нет
  • Bazy2008B Material
    Bazy2008B Material
    Документ3 страницы
    Bazy2008B Material
    api-26356906
    Оценок пока нет
  • Or Wyklad 4a
    Or Wyklad 4a
    Документ18 страниц
    Or Wyklad 4a
    api-26356906
    Оценок пока нет
  • Zadanie Lab Oblicz Rownolegle
    Zadanie Lab Oblicz Rownolegle
    Документ1 страница
    Zadanie Lab Oblicz Rownolegle
    api-26356906
    Оценок пока нет
  • cw5 Paszynski
    cw5 Paszynski
    Документ5 страниц
    cw5 Paszynski
    api-26356906
    Оценок пока нет
  • cw4 Przechwytywanie
    cw4 Przechwytywanie
    Документ3 страницы
    cw4 Przechwytywanie
    api-26356906
    Оценок пока нет
  • AiSD W08
    AiSD W08
    Документ40 страниц
    AiSD W08
    api-26356906
    100% (1)
  • 13 Wyzwalacze
    13 Wyzwalacze
    Документ4 страницы
    13 Wyzwalacze
    api-26356906
    100% (1)
  • AiSD W08
    AiSD W08
    Документ40 страниц
    AiSD W08
    api-26356906
    100% (1)
  • AiSD W06
    AiSD W06
    Документ28 страниц
    AiSD W06
    api-26356906
    Оценок пока нет
  • cw4 Paszzynski
    cw4 Paszzynski
    Документ4 страницы
    cw4 Paszzynski
    api-26356906
    Оценок пока нет
  • Aisd w9
    Aisd w9
    Документ75 страниц
    Aisd w9
    api-26356906
    100% (1)
  • AiSD W02
    AiSD W02
    Документ56 страниц
    AiSD W02
    api-26356906
    Оценок пока нет
  • Zaj Lab 9
    Zaj Lab 9
    Документ1 страница
    Zaj Lab 9
    api-26356906
    Оценок пока нет
  • Zaj Lab 8
    Zaj Lab 8
    Документ1 страница
    Zaj Lab 8
    api-26356906
    Оценок пока нет
  • Linux Semafory Opis
    Linux Semafory Opis
    Документ3 страницы
    Linux Semafory Opis
    api-26356906
    Оценок пока нет
  • Paszynski I6Y1S1 Lab8
    Paszynski I6Y1S1 Lab8
    Документ3 страницы
    Paszynski I6Y1S1 Lab8
    api-26356906
    Оценок пока нет
  • Sop 07 Lab
    Sop 07 Lab
    Документ10 страниц
    Sop 07 Lab
    api-26356906
    Оценок пока нет
  • Sop 09 Lab
    Sop 09 Lab
    Документ7 страниц
    Sop 09 Lab
    api-26356906
    Оценок пока нет