Professional Documents
Culture Documents
AiSD W12
AiSD W12
W drzewie czerwono-czarnym:
wszystkie wartości NULL traktujemy jako
zewnętrzne węzły drzewa – liście;
zwyczajne węzły drzewa r-b (zawierające klucze)
nazywamy węzłami wewnętrznymi drzewa;
bh=2
bh=2 bh=2
bh=1
bh=1
bh=0
Możliwe przypadki:
Przypadek 0
Z jest korzeniem → przekoloruj nowo wstawiony węzeł na
czarno;
G Z
U
P
Z P G
S
S U
1) rotacja P wokół G;
2) przekolorowanie P i G;
G P
P Z G
U
Z S
S U
Uwaga: Ten przypadek zachodzi w drugim kroku Przypadku 2
Uwaga:
Przedstawione algorytmy rozpatrywanych operacji na
drzewach
r-b oparte są na założeniu, ze każdy węzeł drzewa r-b ma
następującą strukturę:
✦ pole key
✦ pole color
✦ pole left // wskaźnik na lewy następnik
✦ pole right // wskaźnik na prawy następnik
✦ pole p // wskaźnik na poprzednik
wstawienie węzła z
Przypadek (1)
Przypadek (2)
Przypadek (3)
11
2 14
4
1 15
7 ✦ Każdy węzeł ma kolor
czerwony lub czarny;
✦ Korzeń ma kolor czarny;
5 8 ✦ Każdy liść (wskaźnik o
wartości NULL) ma kolor
czarny;
✦ Jeżeli węzeł jest czerwony, to
Z 4 jego następniki są czarne;
✦ Dla każdego węzła każda
Czy otrzymane drzewo jest drzewem r-b? prosta ścieżka od węzła do
liścia zawiera jednakową
Algorytmy i struktury danych liczbę węzłów czarnych; 22
Operacje na drzewie czerwono –
czarnym
Przykład (cd.)
Identyfikacja przypadku
11 (po wstawieniu węzła 4):
- Zarówno poprzednik (ojciec)
2 14 jak i bezpośredni sąsiad
poprzednika (wuj) są
1 15 czerwone;
7
- Zachodzi Przypadek 1;
Korekta:
5 8 ✦ koloruj poprzednik (ojca) i
jego sąsiada (wuja) na
Z 4 czarno;
✦ koloruj poprzednika ojca
(dziadka) na czerwono;
✦ ustaw Z na poprzednika ojca
(dziadka);
Algorytmy i struktury danych 23
Operacje na drzewie czerwono –
czarnym
Przykład (cd.)
- Ponownie węzeł Z i jego przodek
są koloru czerwonego; 11
- Wuj Y węzła Z jest czarny a Z
jest prawym synem, podczas gdy
2 Y 14
ojciec lewym;
- Zachodzi Przypadek 2;
1 15
Z 7
Korekta:
wykonaj rotację Z w lewo 5 8
wokół ojca (2);
wykonaj rotację Z w prawo
wokół dziadka (11); 4
koloruj dziadka (11) na
czerwono;
koloruj Z na czarno;
Jak wygląda drzewo po wykonaniu tych operacji?
Algorytmy i struktury danych 24
Operacje na drzewie czerwono –
czarnym
Przykład (cd.)
- Po wykonaniu lewej
rotacji Z względem 2;
11
11
Z 7 Y 14
2 Y 14
15 15
1
Z7 2 8
5 8
1 5
4
4
Przykład (cd.)
Z 7
- Po wykonaniu prawej
rotacji Z względem 11; 2 11
11 1 5 8 Y 14
Z7 Y 14
15 4 15
2 8
1 5
4
Algorytmy i struktury danych 26
Operacje na drzewie czerwono –
czarnym
Przykład (cd.) Z 7
2 11
- Po przekolorowaniu Z i 11; 1 5 8 Y 14
- Drzewo teraz jest 4 15
poprawnym drzewem r-b; Z 7
1.Każdy węzeł ma kolor
czerwony lub czarny;
2 11
2.Korzeń ma kolor czarny;
3.Każdy liść (wskaźnik o
wartości NULL) ma kolor
1 Y 14
czarny; 5 8
4.Jeżeli węzeł jest czerwony, to
jego następniki są czarne;
5.Dla każdego węzła każda
prosta ścieżka od węzła do
4 15
liścia zawiera jednakową Czy rzeczywiście otrzymaliśmy drzewo
liczbę węzłów czarnych;
czerwono-czarne?
Algorytmy i struktury danych 27
Operacje na drzewie czerwono–
czarnym
Usuwanie
◆ Jakie zmiany wywołuje usunięcie węzła z drzewa?
◆ Czerwonego:
✦ Czarne wysokości węzłów nie zmieniają się;
✦ Ponadto usuwany węzeł nie mógł być korzeniem, bo
byłby koloru czarnego;
◆ Czarnego:
✦ Ścieżki na których leżał usunięty węzeł mają o jeden
czarny węzeł mniej: złamanie założeń 4 i 5;
✦ Jeżeli usuwany węzeł był korzeniem, może zastąpić go
węzeł koloru czerwonego: złamanie zasady 2;
Przypadek 1
S jest koloru czerwonego;
X S
Czerwony
lub czarny
P
X S
S
X
S
X
P S
rotacja
P
S
X
S X
P
przekolorowanie
S S
X
Uwaga P
Rozpatrywany przypadek jest przekolorowanie
przypadkiem końcowym!
P
✦ Zamiana kolorów S i lewego potomka S; P
S P X S
X
rotacja X
S
przekolorowanie
7 7
2 11 11
2
1 5 8 1 8
Y
7 7
Y
2 11
2
1 5 8 X 1 5 8
7 8
2 11 2 11
1 5 8 1 5
Y
Uwaga:
Węzłem fizycznie usuniętym jest węzeł z wartością 8
przepisanie y do z
Przypadek 1
Przypadek 2
Przypadek 3
Przypadek 4
1 5 8 14 Y
4 15 X 7
P
2 14
1 5 8 15 X
S
4
Algorytmy i struktury danych 43
Operacje na drzewie czerwono –
czarnym
1 5 8 15 X 7
S
2 14 X
4
1 5 8 15
4
Algorytmy i struktury danych 44
Operacje na drzewie czerwono –
czarnym
4 15
Y 7
4 11
Co dalej?
1 5 8 14
Ponieważ usunięty węzeł był czerwony własności drzewa czerwono-
czarnego nie uległy zmianie – korekta nie jest potrzebna 15
Algorytmy i struktury danych 45
Operacje na drzewie czerwono –
czarnym
4 15