Documente Academic
Documente Profesional
Documente Cultură
B5 Cap 4
B5 Cap 4
69
4.2 Operaţii fundamentale în arborii binari de căutare
70
Valoarea 30 este comparată cu
21 41. Cum 41>30, valoarea 30 va fi
inserată în subarborele stâng
>> subordonat nodului care reţine
18 41 30
valoarea 41.
7 32
25 37
18 41
7 32
25 37
30
Fig. 4.1 Ilustrarea algoritmului de inserare a unei chei într-un arbore
binar de căutare
73
o cheia căutată este mai mică decât cheia reţinută de nodul
rădăcină; în acest caz se caută cheia în subarborele
stâng.
Următoarea funcţie implementează acest algoritm. Ea are doi
parametri: adresa nodului rădăcină arborelui în care se face căutarea şi
cheia căutată. Funcţia va returna adresa nodului care reţine cheia
căutată sau valoarea NULL în cazul în care cheia căutată nu apare în
arbore. Declaraţiile pentru tipurile folosite sunt cele din programul 4.1.
74
21 21
18 41 18 41
7 32 7 32
25 37 37
39 39
21 21
18 41 18 32
7 32 7 25 37
25 37 39
39
Fig. 4.3 Eliminarea unui nod care are un singur subarbore subordonat
dintr-un arbore binar
21 25
18 41 18 41
7 32 7 32
25 37 37
39 39
Fig. 4.4 Eliminarea unui nod care are ambii subarbori prin înlocuirea
cheii acestuia cu cea mai mică cheie din subarborele drept.
eliminarearb(radacina, radacina->info);
cout << "\ntraversare in inordine\n";
inordine(radacina);
cout << "\ntraversare in preordine\n";
preordine(radacina);
în fereastra consolă vor apare şi următoarele informaţii care
demonstrează eliminarea cheii din rădăcină (eliminarea valorii 21):
traversare in inordine
7 18 25 30 32 37 41
traversare in preordine
25 18 7 41 32 30 37
78
4.3 Determinarea succesorului unei chei dintr-un arbore
binar de căutare
21
18 41
7 32 48
25 37
34 39
80
o dacă valoarea returnată este chiar valoarea cheii căutate,
atunci valoarea din nodul curent succesorul;
o dacă valoarea este mai mare decât cheia căutată, ea
reprezintă soluţia problemei.
Dacă valoarea returnată de această funcţie în main() este valoarea
cheii date, atunci cheia dată este cea maximă şi deci nu are succesor.
81
4.4 Probleme propuse
82