You are on page 1of 47

Algorytmy i struktury danych

Temat: Drzewa czerwono-


czarne
Drzewa czerwono – czarne (RB)

 Drzewo czerwono–czarne (r-b) jest kolejnym


rozwinięciem drzewa BST;
 Powstało w celu przyspieszenia operacji
przetwarzania przez odpowiednią organizację
węzłów w drzewie;
 Dzięki zastosowanym metodom równoważenia
pesymistyczna złożoność operacji wynosi O(log2n);
 Drzewo r-b powstaje przez rozszerzenie węzła
drzewa BST o pole koloru {czerwony, czarny};

Algorytmy i struktury danych 2


Drzewa czerwono – czarne (r-b)

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;

Algorytmy i struktury danych 3


Drzewa czerwono – czarne (r-b)

Własności drzewa czerwono-czarnego:


(1) Każdy węzeł ma kolor czerwony lub czarny;
(2) Korzeń ma kolor czarny;
(3) Każdy liść (wskaźnik o wartości NULL) ma
kolor czarny;
(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 liścia zawiera jednakową liczbę
węzłów czarnych;

Algorytmy i struktury danych 4


Drzewa czerwono – czarne

Przykład drzewa czerwono-czarnego:

Ile węzłów ma powyższe drzewo? Odp.: 25-1= 31

Algorytmy i struktury danych 5


Drzewa czerwono – czarne

Czy poniższe drzewo jest drzewem czerwono-czarnym? TAK

11 1.Każdy węzeł ma kolor


czerwony lub czarny;
2.Korzeń ma kolor czarny;

2 14 3.Każdy liść (wskaźnik o


wartości NULL) ma kolor
czarny;
4.Jeżeli węzeł jest czerwony, to
1 15 jego następniki są czarne;
7 5.Dla każdego węzła każda
prosta ścieżka od węzła do
liścia zawiera jednakową
liczbę węzłów czarnych;
5 8

Algorytmy i struktury danych 6


Drzewa czerwono – czarne

Czy poniższe drzewo jest drzewem czerwono czarnym? NIE

11 1.Każdy węzeł ma kolor


czerwony lub czarny;
2.Korzeń ma kolor czarny;

2 14 3.Każdy liść (wskaźnik o


wartości NULL) ma kolor
czarny;

1 15 4.Jeżeli węzeł jest czerwony, to


jego następniki są czarne;
7 5.Dla każdego węzła każda
prosta ścieżka od węzła do
liścia zawiera jednakową
liczbę węzłów czarnych;
5 8

Algorytmy i struktury danych 7


Drzewa czerwono – czarne

◆ Wysokość węzła: h(x) – największa liczba węzłów


na drodze prostej z węzła x do liści;

◆ Czarna wysokość węzła: bh(x) – liczba węzłów


czarnych
(z uwzględnieniem liścia - NULL) na drodze od tego
węzła do liścia (z wykluczeniem tego węzła);

◆ Czarna wysokość drzewa r-b – czarna wysokość


korzenia danego drzewa;

Algorytmy i struktury danych 8


Drzewa czerwono – czarne

bh=2

bh=2 bh=2

bh=1

bh=1

bh=0

Algorytmy i struktury danych 9


Drzewa czerwono – czarne
Lemat 1
Każde poddrzewo r-b o korzeniu w dowolnym węźle x
posiada co najmniej n = 2bh(x) – 1 węzłów
wewnętrznych, tzn. n ≥ 2bh(x) – 1
Lemat 2
Każdy węzeł x o wysokości h(x) ma czarną wysokość
bh(x), przy czym
bh(x) ≥ h(x) / 2.
Lemat 3
Drzewo czerwono-czarne o n węzłach wewnętrznych
ma wysokość h nie większą niż 2 log2(n+1), tzn.:
h ≤ 2 log2(n+1)

np.: dla n=7 h ≤ 6


dla n=1023 h ≤ 2 log21024 = 20
dla n=4095 h ≤ 2 log24096 = 24
dla n=16383 h ≤ 2 log216384 = 28
Algorytmy i struktury danych 10
Operacje na drzewie czerwono –
czarnym
 Wyszukiwanie
 Ponieważ struktura drzewa nie ulega zmianie
operacja wyszukiwania realizowana jest tak samo
jak w zwykłym drzewie BST

Algorytmy i struktury danych 11


Operacje na drzewie czerwono –
czarnym
 Wstawianie
◆ Wstaw węzeł we właściwe miejsce (z zachowaniem
własności drzewa BST);
◆ Pokoloruj węzeł na czerwono (Z wskazuje na nowy
węzeł);
◆ Jeśli trzeba wykonaj korektę drzewa, w zależności od
przypadku (jednego z trzech), który wystąpił.

Możliwe przypadki:
Przypadek 0
Z jest korzeniem → przekoloruj nowo wstawiony węzeł na
czarno;

Algorytmy i struktury danych 12


Operacje na drzewie czerwono –
czarnym
 Wstawianie
Przypadek 1
Zarówno poprzednik (ojciec) jak i bezpośredni
sąsiad poprzednika (wuj) są czerwone;

ojciec sąsiad ojca - wuj

Algorytmy i struktury danych 13


Operacje na drzewie czerwono –
czarnym
 Wstawianie
Przypadek 2
Poprzednik (ojciec) jest czerwony a wuj jest czarny;
ponadto Z i jego ojciec są następnikami po
przeciwnych stronach, tj. Z jest prawym
następnikiem podczas gdy ojciec lewym lub
odwrotnie;

Algorytmy i struktury danych 14


Operacje na drzewie czerwono –
czarnym
 Wstawianie
Przypadek 3
Poprzednik (ojciec) jest czerwony a wuj jest czarny;
ponadto Z i jego ojciec są następnikami po tej
samej stronie (prawymi lub lewymi);

Algorytmy i struktury danych 15


Operacje na drzewie czerwono –
czarnym
 Wstawianie - przypadek 1
Zarówno poprzednik (ojciec) jak i bezpośredni sąsiad poprzednika
(wuj) są czerwone;
1. koloruj poprzednik (ojca) i jego sąsiada (wuja)
na czarno;
2. koloruj poprzednika ojca (dziadka) na
czerwono;
3. ustaw Z na poprzednika ojca (dziadka);
G
Z
ojciec sąsiad ojca - wuj G
P U P U
Z

Algorytmy i struktury danych 16


Operacje na drzewie czerwono –
czarnym
 Wstawianie - przypadek 2
Poprzednik (ojciec) jest czerwony, a wuj jest czarny;
ponadto X jest prawym następnikiem a ojciec lewym lub odwrotnie;
1) podwójna rotacja:
- lewa: Z wokół P,
- prawa: Z wokół G;
4) przekolorowanie G i Z;

G Z
U
P
Z P G
S
S U

Algorytmy i struktury danych 17


Operacje na drzewie czerwono –
czarnym
 Wstawianie - przypadek 3
Poprzednik (ojciec) jest czerwony a wuj jest czarny;
ponadto X i jego ojciec są następnikami po tej samej stronie (prawymi
lub lewymi);

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

Algorytmy i struktury danych 18


Operacje na drzewie czerwono –
czarnym

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

Algorytmy i struktury danych 19


Operacje na drzewie czerwono –
czarnym
 Wstawianie „Bottom Up”
// z - wskaźnik na dołączany węzeł

lokalizacja miejsca wstawienia węzła


(nowy węzeł będzie wstawiony po węźle y)

wstawienie węzła z

// wywołanie funkcji korekty

Algorytmy i struktury danych 20


Operacje na drzewie czerwono –
czarnym
 Wstawianie „Bottom Up” – algorytm funkcji
korekty: poprzednik z (ojciec) jest czerwony

y wskazuje na sąsiada ojca (wuja)

Przypadek (1)

Przypadek (2)

Przypadek (3)

Algorytmy i struktury danych 21


Operacje na drzewie czerwono –
czarnym
 Przykład – wstawienie węzła z wartością 4

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

Algorytmy i struktury danych 25


Operacje na drzewie czerwono –
czarnym

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

Algorytmy i struktury danych 28


Operacje na drzewie czerwono –
czarnym
 Usuwanie „Bottom-Up”
1. Usuwanie przebiega analogicznie do operacji w drzewie BST;
2. Korekta przy usuwaniu węzła czarnego:
✦ Założenia:
• Y – węzeł usuwany (fizycznie) w konsekwencji żądania
usunięcia wskazanej wartości;
• X – węzeł, który zastępuje Y;
• P – przodek węzła Y;
• S – sąsiad (brat) węzła X;
• X wskazuje węzeł z nadmiarowym kolorem czarnym;
✦ Przypadki:
(1) S jest koloru czerwonego;
(2) S jest koloru czarnego oraz ma dwóch czarnych
potomków;
(3) S jest koloru czarnego, a jego prawy potomek koloru
czerwonego;
(4) S jest koloru czarnego, jego prawy potomek koloru
czarnego, a lewy koloru czerwonego;
Uwagi
4. Usunięcie węzła czerwonego nie zmienia własności drzewa r-b
5. Funkcja korekty jest wywoływana dla węzła z nadmiarowym
kolorem czarnym
(jest to zawsze jeden z następników fizycznie usuwanego węzła)
Algorytmy i struktury danych 29
Operacje na drzewie czerwono –
czarnym

Przypadek 1
S jest koloru czerwonego;

X S

Algorytmy i struktury danych 30


Operacje na drzewie czerwono –
czarnym
Przypadek 2
S jest koloru czarnego oraz ma dwóch
czarnych potomków;

Czerwony
lub czarny
P
X S

Algorytmy i struktury danych 31


Operacje na drzewie czerwono –
czarnym
Przypadek 3
S jest koloru czarnego, a jego prawy
potomek koloru czerwonego;

S
X

Algorytmy i struktury danych 32


Operacje na drzewie czerwono –
czarnym
Przypadek 4
S jest koloru czarnego, jego prawy potomek
koloru czarnego, a lewy koloru czerwonego;

S
X

Algorytmy i struktury danych 33


Operacje na drzewie czerwono –
czarnym
 Przypadek 1 (S jest koloru czerwonego)
✦Rotacja S wokół P;
✦Przekolorowanie S i P;

P S
rotacja
P
S
X
S X
P
przekolorowanie

Uwaga – to nie jest stan końcowy:


X wystąpi jeden z przypadków 2 – 4;
Algorytmy i struktury danych 34
Operacje na drzewie czerwono –
czarnym
 Przypadek 2
S jest koloru czarnego oraz ma dwóch czarnych potomków;
✦ Przekolorowanie S na czerwono;
✦ Jeżeli P jest koloru czerwonego – bez zmian;
✦ Jeżeli P jest czarne – kolor musi być propagowany w drzewie w kierunku
korzenia;

Czerwony lub przekolorowanie X


czarny
P P

S S
X

Jeżeli czarny – propagacja koloru w górę;

Algorytmy i struktury danych 35


Operacje na drzewie czerwono –
czarnym
 Przypadek 3
S jest koloru czarnego a prawy potomek koloru czerwonego;
✦ Rotacja S wokół P;
✦ Zamiana kolorów S i P;
✦ Przekolorowanie prawego potomka S na czarno;
S
P
rotacja
S P
X S

Uwaga P
Rozpatrywany przypadek jest przekolorowanie
przypadkiem końcowym!

Algorytmy i struktury danych 36


Operacje na drzewie czerwono –
czarnym
 Przypadek 4
S jest koloru czarnego, prawy potomek koloru czarnego a lewy
koloru czerwonego;
✦ Rotacja lewego potomka S wokół S;

P
✦ Zamiana kolorów S i lewego potomka S; P

S P X S
X

rotacja X
S
przekolorowanie

Algorytmy i struktury danych 37


Operacje na drzewie czerwono –
czarnym
 Przypomnienie
Usunięcie węzła z drzewa BST prowadzi do
jednego
z trzech przypadków:
Przypadek 1

7 7
2 11 11
2
1 5 8 1 8
Y

Algorytmy i struktury danych 38


Operacje na drzewie czerwono –
czarnym
Przypadek 2

7 7
Y
2 11
2
1 5 8 X 1 5 8

Algorytmy i struktury danych 39


Operacje na drzewie czerwono –
czarnym
Przypadek 3

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

Algorytmy i struktury danych 40


Operacje na drzewie czerwono –
czarnym
 Usuwanie:

wyznaczenie węzła y, który zostanie


fizycznie usunięty z drzewa

usunięcie z drzewa węzła y

przepisanie y do z

wywołanie funkcji korekty

Algorytmy i struktury danych 41


Operacje na drzewie czerwono –
czarnym
 Usuwanie „Bottom-Up” – algorytm korekty:
Funkcja korekty jest wywoływana dla lewego lub
prawego syna suwanego węzła y

Przypadek 1

Przypadek 2

Przypadek 3

Przypadek 4

Algorytmy i struktury danych 42


Operacje na drzewie czerwono –
czarnym

Przykład 1 – usunięcie węzła z


wartością 11 Postępowanie:
7 Usuwamy węzeł zgodnie z procedurą
dla drzewa BST
2 11

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

Przykład – usunięcie węzła z wartością 11 (cd.)


 Z którym przypadkiem mamy do czynienia?
Przypadek 2
(S jest koloru czarnego oraz ma dwóch czarnych
potomków)
✦ Przekolorowanie S na czerwono;
7 ✦ Jeżeli P jest koloru czerwonego – bez zmian;
P ✦ Jeżeli P jest czarne – kolor musi być
2 14 propagowany w drzewie w kierunku korzenia;

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

Przykład 2 – usunięcie węzła z


wartością 2 Postępowanie:
7 Usuwamy węzeł zgodnie z procedurą
dla drzewa BST
2 11
1 5 8 14

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

Przykład 3 – usunięcie węzła z


wartością 7 Postępowanie:
7 Usuwamy węzeł zgodnie z procedurą
dla drzewa BST
2 11
1 5 8 14
Y
4 15 8
2 11
1 5 14

4 15

Algorytmy i struktury danych 46


Algorytmy i struktury danych 47

You might also like