Sunteți pe pagina 1din 14

Arbori binari

Parcurgerea arborilor (exemplu)


Arbori binari de căutare
Ştergerea unui nod
Arbori binari de căutare echilibraţi – AVL (G.M.
Adelson-Velsky şi E.M. Landis)
Inserarea unei informaţii noi (teorie + exemplu)
Curs 4 – Parcurgere arbori binari
• RSD (preordine): 4, 2, 1, 3, 6, 5
Stivă – afişăm rădăcina
4 sd al nodului extras din
stivă
2 6
4 6

1 3 5 7
2
bool cautaInformatieAVL(PNODAVL rad, int informatie){
bool temp = false;
if(!rad) return temp;
// cout << rad->informatie;
if(rad->informatie == informatie) temp = true;
if(!temp) temp = temp | cautaInformatieAVL(rad->ss, informatie);
if(!temp) temp = temp | cautaInformatieAVL(rad->sd, informatie);
return temp;
}
08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 2
Curs 4 – Arbori binari de căutare echilibraţi
Arbore Arbore
iniţial dezechilibrat
+2
x
h h+2
+1 +2
x x +1/-1
h h+1 h h+2 y

A h+1/h

A D A D
B C

Rotire stânga
08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 3
Curs 4 – Arbori binari de căutare echilibraţi
• Caz 1 – rotire simplă stânga
x->sd = y->ss;
+2 0
x y y->ss = x;
h h+2 h+1 h+1 -------------------------------
+1
y x 0 PNODAVL temp;

A h h+1 h h temp = rad->sd;//y


C
rad->sd = temp->ss;
temp->ss = rad;
B C A B
calculEchilibru(rad);
calculEchilibru(temp);//y
rad = temp;
return rad;

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 4


Curs 4 – Arbori binari de căutare echilibraţi
• Caz 2 – rotire dublă stânga
+2 -2
x y
h h+2 h+2 h
-1
y x +1
A h+1 h h h+1 C

B C A B

rotire simplă stânga

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 5


Curs 4 – Arbori binari de căutare echilibraţi
• Caz 2 – rotire dublă stânga: faza I, faza II
+2
x 0
x h+2 z
h
h h+2
+2/+1 h+1 h+1
y z -1/0 0/+1
h+1 h h-1/h h+1 x y
A
A
z 0/+1
y
h/h-1 h
h/h-1 C B1 h/h-1 h
h h-1/h

B1 B2
B2 C A B1 B2 C

x->sd = sRotireDreapta(y);
------------------------------- rad = sRotireStanga(rad);
08.12.21 rad->sd Introducere. Structuri de date - noţiunireturn
Curs 1=- sRotireDreapta(rad->sd); generalerad; 6
Curs 4 – Exemplu arbori binari de căutare
echilibraţi - 1, 2, 3, 4, 5, 6, 7

2 6

1 3 5 7

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 7


Curs 4 – Exemplu arbori binari de căutare
echilibraţi - 1, 2, 3, 4, 5, 6, 7
I 1
+1

II – rotire simplă stânga

+2
1 2

2 +1 1 3

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 8


Curs 4 – Exemplu arbori binari de căutare
echilibraţi - 1, 2, 3, 4, 5, 6, 7
+1
III 2

+1
1 3

4
IV – rotire simplă stânga
2 +1
2

+2
1 3 1 +1
4

+1
4 3 5

5
08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 9
Curs 4 – Exemplu arbori binari de căutare
echilibraţi - 1, 2, 3, 4, 5, 6, 7
V – rotire simplă stânga
+2
2

1 +1
4

+1
3 5

6 4

2 5

1 3 6

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 10


Curs 4 – Exemplu arbori binari de căutare
echilibraţi - 1, 2, 3, 4, 5, 6, 7
VI - rotire simplă stânga
4

2 +2
5

+1
1 3 6

4 0
7

2 6

1 3 5 7

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 11


Curs 4 – Exemplu arbori binari de căutare
echilibraţi - 1, 2, 3, 4, 5, 6, 7
4 0
5

+1
2 6 2 6

1 3 5 7 1 3 7

5 6 -1

2 6 2 7

1 3 7 1 3

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 12


Curs 4 – Exemplu arbori binari de căutare
echilibraţi - 1, 2, 3, 4, 6, 7
Adaug 4 - rotire dublă dreapta
6 -2 faza I faza II

2 +1 7 6 3 0

3 7 2 6
1 3 +1

2 4 1 4 7
4

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 13


Curs 4 – Exemplu arbori binari de căutare
echilibraţi - 1, 2, 3, 4, 5, 6, 7
• Adaug 5
3 +1

-1
2 6

1 4 +1 7

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 14

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