Sunteți pe pagina 1din 48

Noţiuni generale

Operaţii de inserţie şi ştergere

Arbori Roşu Negru

Universitatea ”Transilvania” din Braşov

6 aprilie 2022

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Arbore roşu - negru


Definiţie: Un arbore roşu-negru (ARN) este un
arbore binar de căutare ı̂n care:
1 Fiecare nod este roşu sau negru - are deci un

30 câmp suplimentar color

20 45

10 26 37 57

7 null null 27 null null null null

null null null null

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Arbore roşu - negru


Definiţie: Un arbore roşu-negru (ARN) este un
arbore binar de căutare ı̂n care:
1 Fiecare nod este roşu sau negru - are deci un

30 câmp suplimentar color


2 Rădăcina este neagră

20 45

10 26 37 57

7 null null 27 null null null null

null null null null

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Arbore roşu - negru


Definiţie: Un arbore roşu-negru (ARN) este un
arbore binar de căutare ı̂n care:
1 Fiecare nod este roşu sau negru - are deci un

30 câmp suplimentar color


2 Rădăcina este neagră

3 Fiecare frunză este neagră şi NIL


20 45

10 26 37 57

7 null null 27 null null null null

null null null null

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Arbore roşu - negru


Definiţie: Un arbore roşu-negru (ARN) este un
arbore binar de căutare ı̂n care:
1 Fiecare nod este roşu sau negru - are deci un

30 câmp suplimentar color


2 Rădăcina este neagră

3 Fiecare frunză este neagră şi NIL


20 45
4 Dacă un nod este roşu, ambii fii sunt negri ⇒

10 26 37 57 părintele unui nod roşu este negru.

7 null null 27 null null null null

null null null null

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Arbore roşu - negru


Definiţie: Un arbore roşu-negru (ARN) este un
arbore binar de căutare ı̂n care:
1 Fiecare nod este roşu sau negru - are deci un

30 câmp suplimentar color


2 Rădăcina este neagră

3 Fiecare frunză este neagră şi NIL


20 45
4 Dacă un nod este roşu, ambii fii sunt negri ⇒

10 26 37 57 părintele unui nod roşu este negru.


5 Pentru fiecare nod x , oricare drum de la nod la

7 null null 27 null null null null o frunză NIL se ı̂ntâlneşte acelaşi număr de
noduri negre (inclusiv frunza NIL şi exclusiv
null null null null nodul de la care se porneşte). Acest număr se
numeşte ı̂nălţimea neagră a subarborelui de
rădăcină x . Notăm ı̂nălţimea neagră cu bh -
black height.

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Arbore roşu - negru

30

20 45
Observaţii
Definirea unui nod NIL pentru fiecare frunză
presupune un consum inutil de memorie. Se
10 26 37 57 poate considera ı̂n locul acestor frunze un
singur nod santinelă T.nil.
7 27

null

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Arbore roşu - negru

30
Observaţii
Definirea unui nod NIL pentru fiecare frunză
20 45 presupune un consum inutil de memorie. Se
poate considera ı̂n locul acestor frunze un
singur nod santinelă T.nil.
10 26 37 57
Pentru simplitate ı̂n continuare vom ignora ı̂n
desene nodurile NIL.
7 27

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Înălţimea neagră

23 23

11 45 11 31

5 14 25 59 5 14 26 45

9 0 7 12 20 24 28 38 52

27 30
a) b) 29

Care este ı̂nălţimea neagră a fiecărui arbore? a) bh = ? b) bh = ?

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Înălţimea neagră

23 23

11 45 11 31

5 14 25 59 5 14 26 45
null null null null null null
null 9 0 7 12 20 24 28 38 52

null null 27 30
a) b) 29

Care este ı̂nălţimea neagră a fiecărui arbore? a) bh = 2 b) bh = 3

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Înălţimea unui ARN

Într-un ARN niciun drum de la rădăcină la o


frunză nu poate fi mai lung decât dublul unui
23
alt drum la altă frunză.

11 45

5 14 25 null

null null null null


null 9

null null

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Înălţimea unui ARN

Într-un ARN niciun drum de la rădăcină la o


frunză nu poate fi mai lung decât dublul unui
23
alt drum la altă frunză.

11 45 Înălţimea maximă a unui ARN este


2 log2 (n + 1).
5 14 25 null Se demonstrează prin inducţie că orice
subarbore de rădăcină x conţine cel puţin
null null null null 2bh(x ) − 1 noduri interne. Notând cu h
null 9
ı̂nălţimea arborelui şi cu r rădăcina, din
proprietatea 4 se obţine bh(r ) ≥ h/2. Dar
null null
n ≥ 2bh(r ) − 1 ≥ 2h/2 − 1 de unde rezultă
h ≤ 2 log2 (n + 1)

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN - Inserţie

Etape
1 Inserţia noului nod ca la orice arbore binar de căutare

2 Refacerea proprietăţilor roşu - negru.


Obesrvaţie: Nodul care se inserează are culoarea roşie

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN - Inserţie

Proprietăţile ARN: prin inserţie


Proprietăţile 1, 3 şi 5 se păstrează, datorită faptului că se inserează un nod roşu,
care are ca fii două frunze NIL.

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN - Inserţie

Proprietăţile ARN: prin inserţie


Proprietăţile 1, 3 şi 5 se păstrează, datorită faptului că se inserează un nod roşu,
care are ca fii două frunze NIL.

Proprietatea 2 poate fi contrazisă (rădăcina are culoarea neagră). Pentru


rezolvarea acestei situaţii este suficientă colorarea rădăcinii cu negru.

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN - Inserţie

Proprietăţile ARN: prin inserţie


Proprietăţile 1, 3 şi 5 se păstrează, datorită faptului că se inserează un nod roşu,
care are ca fii două frunze NIL.

Proprietatea 2 poate fi contrazisă (rădăcina are culoarea neagră). Pentru


rezolvarea acestei situaţii este suficientă colorarea rădăcinii cu negru.

Proprietatea 4 poate fi contrazisă, dacă părintele de care s-a legat noul nod are
culoarea roşie. În acest caz trebuie refăcută proprietatea. Există ı̂n această
situaţie 3 cazuri care vor fi discutate ı̂n continuare.

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN - Inserţie - Refacerea proprietăţilor RN

Caz 1
B B

P U U P
Prorpietăţile RN trebuie refăcute dacă nodul inserat z
z z roşu se leagă de un părinte P roşu.

Observaţie: s- a realizat inserţie ı̂ntr-un ARN valid


B B
⇒ P nu e rădăcină ⇒ P are un părinte negru B.
P U U P
Cazul I: Unchiul U al lui x (fratele lui P) este roşu.
z z

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN - Inserţie - Refacerea proprietăţilor RN

Caz 1
B Prorpietăţile RN trebuie refăcute dacă nodul inserat z
roşu se leagă de un părinte P roşu.
P U
Observaţie: s- a realizat inserţie ı̂ntr-un ARN valid
z ⇒ P nu e rădăcină ⇒ P are un părinte negru B.

Soluționare Cazul I: Unchiul U al lui x (fratele lui P) este roşu.


B x=B
Soluţie:
P U Se colorează cu roşu B, se colorează cu negru P, U
Se reia procesul de refacere a proprietăţilor de la
z x = B (se urcă ı̂n arbore)

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN - Inserţie - Refacerea proprietăţilor RN


Caz 2 B
a)
P U

z Prorpietăţile RN trebuie refăcute dacă nodul inserat


4 5
1 z roşu se leagă de un părinte P roşu.

2 3 Observaţie: s- a realizat inserţie ı̂ntr-un ARN valid


⇒ P nu e rădăcină ⇒ P are un părinte negru B.
b) B
Cazul II: Unchiul U al lui x este negru şi
U P
a) z la dreapta lui P, iar P la stânga lui B
z b) z la stânga lui P, iar P la dreapta lui B
1 2 5

3 4

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN - Inserţie - Refacerea proprietăţilor RN


Caz 2 B soluție caz 3 B Prorpietăţile RN trebuie refăcute dacă nodul inserat
a) z roşu se leagă de un părinte P roşu.
P U z U
Observaţie: s- a realizat inserţie ı̂ntr-un ARN valid
z
4 5 P 4 5
⇒ P nu e rădăcină ⇒ P are un părinte negru B.
1 3

2 3 1 2
Cazul II: Unchiul U al lui x este negru şi
a) z la dreapta lui P, iar P la stânga lui B
B soluție caz 3 B b) z la stânga lui P, iar P la dreapta lui B
b)
U P U z Soluţie:
ı̂n cazul a) - rotaţie la stânga după P.
1 2
z
1 2 3
P ı̂n cazul b) - rotaţie la dreapta după P
5
Nu se soluţionează complet, ci se trece practic ı̂n
3 4 4 5 cazul 3, ı̂n care refacerea ı̂ncepe de la nodul care
prin rotaţie a coborât, deci de la z = P.

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN - Inserţie - Refacerea proprietăţilor RN


Caz 3 B
a)
P U
Prorpietăţile RN trebuie refăcute dacă nodul inserat
z
3 4 5 z roşu se leagă de un părinte P roşu.

1 2 Observaţie: s- a realizat inserţie ı̂ntr-un ARN valid


⇒ P nu e rădăcină ⇒ P are un părinte negru B.
b) B
Cazul III: Unchiul U al lui x este negru şi
U P
a) z la stânga lui P, iar P la stânga lui B
z b) z la dreapta lui P, iar P la dreapta lui B
1 2 3

4 5

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN - Inserţie - Refacerea proprietăţilor RN


Caz 3 recolorare
B P Prorpietăţile RN trebuie refăcute dacă nodul inserat
a) P,B + rot
z roşu se leagă de un părinte P roşu.
P U z B
Observaţie: s- a realizat inserţie ı̂ntr-un ARN valid
z U
3 4 5
1 2 3
⇒ P nu e rădăcină ⇒ P are un părinte negru B.
4 5
1 2 Cazul III: Unchiul U al lui x este negru şi
recolorare a) z la stânga lui P, iar P la stânga lui B
B
b) P,B + rot P b) z la dreapta lui P, iar P la dreapta lui B
U P B z
Soluţie:
z U Colorare B cu roşu, colorare P cu negru.
1 2 3 3 1 2 apoi
pentru a) Rotaţie la dreapta ı̂n jurul lui B
4 5
4 5 pentru b) Rotaţie la stânga ı̂n jurul lui B.

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN - Inserţie - Refacerea proprietăţilor RN


Algoritm 1: ARN-Insert-Repara(T, z)
cat timp z.p.color = rosu executa
daca z.p = z.p.p.st atunci
U ← z.p.p.dr
caz 1
daca U.color = rosu atunci
z.p.color ← negru
U.color ← negru
z.p.p.color ← rosu
z ← z.p.p
sfarsit daca
altfel
caz 2
daca z ← z.p.dr atunci
z ← z.p
ROT ST (T , z)
sfarsit daca
Arbori Roşu Negru
Noţiuni generale
Operaţii de inserţie şi ştergere

ARN - Inserţie - Refacerea proprietăţilor RN

caz 3
z.p.color ← negru
z.p.p.color ← rosu
ROT DR(T,z.p.p)
altfel (daca z.p e pe dreapta lui z.p.p)
//similar dar simetric pentru nodul z
//aflat la stânga bunicului
T .rad.color ← negru
RETURN

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Complexitatea algoritmului de inserţie

Inserţia presupune:
Algoritmul de inserarea ca la arborii binari de căutare obişnuiţi: complexitate
O(h), h ≤ 2 log2 (n + 1) ⇒complexitatea este O(log2 n).
Algoritmul de refacere al proprietăţilor RN: porneşte de jos ı̂nspre rădăcină pe o
ramură ⇒ complexitatea este O(log2 n).
Rexultă complexitatea totală: O(log2 n).

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Reprezentarea unui ARN - cod C++

nod ∗ r a d ;
s t r u c t ARN{ nod ∗ n i l ;
s t r u c t nod { ARN( )
int info ; {
char c o l o r ; n i l = new nod ;
nod ∗ p , ∗ s t , ∗ d r ; nod−>c o l o r = ’ n ’ ;
nod ( i n t k e y = 0 ) nod−>p = n i l ;
{ nod−>s t = nod−>d r = n i l ;
i n f o = key ; rad = n i l ;
color = ’r ’ ; }
p = s t = dr = n u l l p t r ; // r e s t u l f u n c t i i l o r .
} // I n program NU mai e x i s t a NULL .
}; // Se i n l o c u i e s t e cu n i l
};

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Algoritmul pentru ştergerea unui nod - recapitulare


Cazul 1: z nu are fiu stâng Cazul 3.1: z are 2 fii, succesorul y
al lui z este fiul drept al lui z
Algoritm 2: TRANSPLANT(T , u, v )
P P P P
daca u.p = NIL atunci
z y z y sfarsit daca
NULL y
1 2 1
y altfel
1 2
NULL daca u = u.p.st atunci
1 2 2 u.p.st = v
Cazul 3.2: z are 2 fii, succesorul y
Cazul 2: z nu are fiu drept
al lui z nu este fiul al lui z
sfarsit daca
P P P P altfel
u.p.dr = v
z y z y
sfarsit daca
y NULL r
1 2 1
1 r sfarsit daca
1 2
y daca v 6= Nil atunci
NULL
x
x
v .p = u.p
2 3
2 3
sfarsit daca

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Algoritmul pentru ştergerea unui nod

ARN_Transplant(u, v) DAR: la ARN trebuie tratat cazul nodului santinelă!

Algoritm 3: ARN TRANSPLANT(T , u, v )


P
P daca u.p = T .NIL atunci
sfarsit daca
NULL altfel
u
v daca u = u.p.st atunci
u.p.st = v
NULL sfarsit daca
1 2 v altfel
u.p.dr = v
sfarsit daca
x este nodul santinelă sfarsit daca
v .p = u.p

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Algoritmul pentru ştergerea unui nod


Transplant(z, x)
(1) P
P
ARN DELETE(T , z)
z
x color = z.color
daca z.st = T .NIL atunci
NULL x
x = z.dr
x poate fi nodul santinelă ARN TRANSPLANT(T , z, x )
altfel
Transplant(z, x) daca z.dr = T .NIL atunci
(2) P P x = z.st
ARN TRANSPLANT(T,z,x)
z altfel
x

x NULL

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Algoritmul pentru ştergerea unui nod


P P

z y

y
1 1 x [...] altfel
NULL x y = SUCCESOR(T , z)
color = y .color
x nodul santinelă x = y .dr
P P daca y .p = z atunci
x .p = y
z y altfel

y NULL
1 1 x
NULL NULL x
refacerea proprietăților RN începe de la x Arbori Roşu Negru
Noţiuni generale
Operaţii de inserţie şi ştergere

Algoritmul pentru ştergerea unui nod


[...] altfel
P P RB TRANSPLANT(T , y , x )
y .dr = z.dr
z Transplant(z,y) y z.dr .p = y
sfarsit daca
z.dr RB TRANSPLANT(T , z, y )
1 1 z.dr
y .st = z.st
y.p
z.st.p = y
3 y.p y .color = z.color
3
sfarsit daca
y 2 x sfarsit daca
2
x daca color = negru atunci
NULL
RB DELETE REPARA(T , x )
Transplant(y,x) sfarsit daca
RETURN

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Algoritmul pentru refacerea proprietăţilor RN


Caz 1: Caz 0: daca x .color = rosu atunci colorez x cu
P negru si STOP.
bh-1
x bh Acest caz e rezolvat la sfarsitul algoritmului!
F

bh bh RB DELETE REPARE(T , x )
1 2 3 4 cat timp x 6= T .rad si x .color = negru
-colorez P roșu daca x = x .p.st atunci
-colorez F negru F = x .p.dr
-rotație la st după P F
// caz 1: fratele e rosu
bh
P daca F .color = rosu
4
bh-1 x F .color = negru
3
bh x .p.color = rosu
1 2 ROT ST(T , x .p)
F = x .p.dr
Se intră într-unul din
cazurile 2 - 4 sfarsit daca

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Algoritmul pentru refacerea proprietăţilor RN


- colorează F roșu
bh+1
- continuă cu x = P
P
P bh
bh-1
F
x bh-1
FS FD // caz 2: fratele si
1 2 // cei 2 fii ai sai sunt negri
bh-1 3 4 5 6 [...]daca ( F .st.color = negru si
F .dr .color = negru) atunci
bh
- se reiau toate
x cazurile (0 - 4) F .color = rosu
bh-1 de la x = P,
bh-1
P x = x .p
deoarece a scăzut
F altfel
x bh-1 per total înălțimea
FS FD neagră
1 2

bh-1 3 4 5 6

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Algoritmul pentru refacerea proprietăţilor RN


Caz 3
P bh
bh-1
x F bh-1 -colorez F roșu
-colorez FS negru
1 2 FS FD // caz 3: fratele F negru
-rotesc dr. după F
// F .st = rosu si F .dr = negru
3 4 5 6
[...] altfel
bh-1 bh-1
daca F .dr .color = negru atunci
F .st.color = negru
bh
bh-1 P F .color = rosu
ROT DR(T , F )
x FS
Acum F=x.p.dr
F bh-1 e cazul 4 sfarsit daca
1 2 3
4 FD
bh-1
bh-1
5 6

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

Algoritmul pentru refacerea proprietăţilor RN


Caz 4
P bh -colorez F
bh-1 // caz 4: fratele F negru
cu culoarea lui P
x F -colorez P negru // F .dr = rosu
-colorez FD negru [...]
FS FD -rotește st. după P F .color = x .p.color
1 2
x .p.color = negru
3 4 5 6 F .dr .color = negru
bh-1 bh-1 bh-1 ROT ST(T , x .p)
x = T .rad
sfarsit daca
STOP altfel //daca x pe dreapta parintelui
bh F bh //se reia algoritmul simetric,
P
// inlocuind peste tot dreapta cu
bh-1 FD // stanga si invers
x FS sfarsit cat timp
5 6
x .color = negru //rezolva caz 0
1 3 4 bh-1 bh-1 RETURN
bh-1 Arbori Roşu Negru
Noţiuni generale
Operaţii de inserţie şi ştergere

ARN ştergere - Exemple


Caz 0: x Sol: colorez x negru

Caz 1: Sol:
-colorez P roșu
P
-colorez F negru
30 delete(12)
x F -rotație la st după P
=> caz 2, 3 sau 4
Caz 2:
Sol:
PP - colorează F roșu 20 45
- continuă cu x = P
x F
=> reiau toate cazurile
FS FD
10 26 37 57
Caz 3 Sol:
P
-colorez F roșu
12 z 35 39 51 58
-colorez FS negru 7 27
x F
-rotesc dr. după F
FS FD => caz 4
1 9 17 x
Caz 4 Sol:
P -colorez F cu P.color
-colorez P, FD negru
x F -rotesc st. după P
FS FD

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN ştergere - Exemple


Caz 0: x Sol: colorez x negru

Caz 1: Sol:
P
-colorez P roșu
30 delete(12)
-colorez F negru
x F -rotație la st după P
=> caz 2, 3 sau 4
Caz 2:
PP
Sol: 20 45
- colorează F roșu
- continuă cu x = P
x F
=> reiau toate cazurile
FS FD
10 26 37 57
Caz 3
P
Sol:
-colorez F roșu 7 17 x 27 35 39 51 58
-colorez FS negru
x F
-rotesc dr. după F
FD => caz 4
1 9
FS caz 0
Caz 4 Sol:
P -colorez F cu P.color
-colorez P, FD negru
Sunrem ı̂n cazul 0 (x.color = rosu) ⇒
x F -rotesc st. după P colorăm x cu negru.
FS FD

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN ştergere - Exemple


Caz 0: x Sol: colorez x negru

Caz 1: Sol:
-colorez P roșu
P
-colorez F negru
30 delete(12)
x F -rotație la st după P
=> caz 2, 3 sau 4
Caz 2:
Sol:
PP - colorează F roșu 20 45
- continuă cu x = P
x F
=> reiau toate cazurile
FS FD
10 26 37 57
Caz 3 Sol:
P
-colorez F roșu
-colorez FS negru 7 17 x 27 35 39 51 58
x F
-rotesc dr. după F
FS FD => caz 4
1 9
Caz 4 Sol:
P -colorez F cu P.color
-colorez P, FD negru
x F -rotesc st. după P
FS FD

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN ştergere - Exemple


Caz 0: x Sol: colorez x negru

Caz 1: Sol:
-colorez P roșu
P
-colorez F negru
30 delete(10)
x F -rotație la st după P
=> caz 2, 3 sau 4
Caz 2:
Sol:
PP - colorează F roșu 20 45
- continuă cu x = P
x F
=> reiau toate cazurile
FS FD
10 z 26 37 57
Caz 3 Sol:
P
-colorez F roșu
7 17 y 27 35 39 51 58
-colorez FS negru
x F
-rotesc dr. după F
FS FD => caz 4
1 9
Caz 4 Sol: y=succesor(z)
P -colorez F cu P.color
-colorez P, FD negru
x F -rotesc st. după P
FS FD

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN ştergere - Exemple


Caz 0: x Sol: colorez x negru

Caz 1: Sol:
-colorez P roșu
P
-colorez F negru
30 delete(10)
x F -rotație la st după P
=> caz 2, 3 sau 4
Caz 2:
Sol:
PP - colorează F roșu 20 45
- continuă cu x = P
x F
=> reiau toate cazurile P
FS FD
17 26 37 57
Caz 3 Sol:
P
-colorez F roșu
F 7 null x 27 35 39 51 58
-colorez FS negru
x F
-rotesc dr. după F
FS FD => caz 4
1 9 caz 1
Caz 4 Sol:
P -colorez F cu P.color

x F
-colorez P, FD negru
-rotesc st. după P
Suntem ı̂n cazul 1.
FS FD

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN ştergere - Exemple


Caz 0: x Sol: colorez x negru

Caz 1: Sol:
-colorez P roșu
P
-colorez F negru
30 delete(10)
x F -rotație la st după P
=> caz 2, 3 sau 4
Caz 2:
Sol:
PP - colorează F roșu 20 45
- continuă cu x = P
x F
=> reiau toate cazurile P
FS FD
17 26 37 57
Caz 3 Sol:
P
-colorez F roșu
F 7 null x 27 35 39 51 58
-colorez FS negru
x F
-rotesc dr. după F
FS FD => caz 4
1 9 caz 1
Caz 4 Sol:
P -colorez F cu P.color
-colorez P, FD negru
x F -rotesc st. după P
FS FD

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN ştergere - Exemple


Caz 0: x Sol: colorez x negru

Caz 1: Sol: 30 delete(10)


-colorez P roșu
P
-colorez F negru
x F -rotație la st după P
=> caz 2, 3 sau 4
Caz 2: 20 45
Sol:
PP - colorează F roșu
- continuă cu x = P 7 26 37 57
x F
=> reiau toate cazurile
FS FD P
1 17 27 35 39 51 58
Caz 3 Sol:
P
-colorez F roșu
x F
-colorez FS negru
F 9 null x caz 2
-rotesc dr. după F
FS FD => caz 4 null null
Caz 4 Sol:
P -colorez F cu P.color Suntem ı̂n cazul 2 ⇒ colorăm F roşu şi
-colorez P, FD negru
x F -rotesc st. după P urcăm x = x .p. Reluam toate cazurile.
FS FD

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN ştergere - Exemple


Caz 0: x Sol: colorez x negru
Sol:
Caz 1:
P
-colorez P roșu 30 delete(10)
-colorez F negru
x F -rotație la st după P
=> caz 2, 3 sau 4
Caz 2:
Sol: 20 45
PP - colorează F roșu
- continuă cu x = P
x F
=> reiau toate cazurile 7 26 37 57
FS FD

Caz 3
P
Sol: 1 17 x 27 35 39 51 58
-colorez F roșu
-colorez FS negru
x F
-rotesc dr. după F 9 null caz 0
FS FD => caz 4
Caz 4 Sol: null null
P -colorez F cu P.color

x F
-colorez P, FD negru x roşu ⇒ caz 0 ⇒ coloram x negru. STOP
-rotesc st. după P
FS FD

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN ştergere - Exemple


Caz 0: x Sol: colorez x negru

Caz 1: Sol:
-colorez P roșu
P
-colorez F negru
x F -rotație la st după P 30
=> caz 2, 3 sau 4
Caz 2:
Sol:
PP - colorează F roșu
- continuă cu x = P 20 45
x F
=> reiau toate cazurile
FS FD
7 26 37 57
Caz 3 Sol:
P
-colorez F roșu
-colorez FS negru 1 17 27 35 39 51 58
x F
-rotesc dr. după F
FS FD => caz 4
9
Caz 4 Sol:
P -colorez F cu P.color
-colorez P, FD negru
x F -rotesc st. după P
FS FD

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN ştergere - Exemple


Caz 0: x Sol: colorez x negru

Caz 1: Sol:
-colorez P roșu
P
30 z
-colorez F negru delete(30)
x F -rotație la st după P
=> caz 2, 3 sau 4
Caz 2:
Sol:
PP - colorează F roșu
- continuă cu x = P 20 45
x F
=> reiau toate cazurile
FS FD
7 26 37 57
Caz 3 Sol:
P
-colorez F roșu
-colorez FS negru 1 17 27 35 39 51 58
x F
-rotesc dr. după F
y = succesor(z)
FS FD => caz 4
9
Caz 4 Sol:
P -colorez F cu P.color
-colorez P, FD negru
x F -rotesc st. după P
FS FD

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN ştergere - Exemple


Caz 0: x Sol: colorez x negru

Caz 1: Sol:
-colorez P roșu
P
-colorez F negru delete(30)
x F -rotație la st după P 35
=> caz 2, 3 sau 4
Caz 2:
Sol:
PP - colorează F roșu
- continuă cu x = P 20 45
x F
=> reiau toate cazurile
FS
P
FD
7 26 37 57
Caz 3 F
P
Sol: x
-colorez F roșu
x F
-colorez FS negru 1 17 27 null 39 51 58
-rotesc dr. după F
FS FD => caz 4 caz 2
9
Caz 4 Sol:
P -colorez F cu P.color
-colorez P, FD negru
x F -rotesc st. după P
FS FD

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN ştergere - Exemple


Caz 0: x Sol: colorez x negru

Caz 1: Sol:
-colorez P roșu
P
-colorez F negru delete(30)
x F -rotație la st după P 35
=> caz 2, 3 sau 4
Caz 2:
Sol:
PP - colorează F roșu
- continuă cu x = P 20 45
x F
=> reiau toate cazurile x
FS FD
7 26 37 57
Caz 3 Sol:
P
-colorez F roșu
-colorez FS negru 1 17 27 null 39 51 58
x F
-rotesc dr. după F
FS FD => caz 4 caz 0
9
Caz 4 Sol:
P -colorez F cu P.color
-colorez P, FD negru
x F -rotesc st. după P
FS FD

Arbori Roşu Negru


Noţiuni generale
Operaţii de inserţie şi ştergere

ARN ştergere - Exemple


Caz 0: x Sol: colorez x negru

Caz 1: Sol:
-colorez P roșu
P
-colorez F negru delete(30)
x F -rotație la st după P 35
=> caz 2, 3 sau 4
Caz 2:
Sol:
PP - colorează F roșu
- continuă cu x = P 20 45
x F
=> reiau toate cazurile
FS FD
7 26 37 57
Caz 3 Sol:
P
-colorez F roșu
-colorez FS negru 1 17 27 39 51 58
x F
-rotesc dr. după F
FS FD => caz 4
9
Caz 4 Sol:
P -colorez F cu P.color
-colorez P, FD negru
x F -rotesc st. după P
FS FD

Arbori Roşu Negru

S-ar putea să vă placă și