Sunteți pe pagina 1din 2

Duma Stefania

Laborator 6 ASD

Arbori binari implementati folosind alocare dinamica

Avem urmatorul tip de date necesar pentru implementarea arborilor binari:


struct arb{ int inf; arb *st, *dr; }

Urmatorul subprogram afiseaza nodurile aflate pe nivelul k (r e radacina arborelui, i e nivelul current in arbore):
void nivel(arb *r, int i, int k) { if (i == k) cout <<r->inf<< ; else { if (r->st != NULL) nivel(r->st, i+1, k); if (r->dr != NULL) nivel(r->dr, i+1, k); } }

Pentru a intelege mai bine cum lucreaza un algoritm luati pe foaie un exemplu si vedeti pas cu pas ce se intampla. Pentru subprogramul de mai sus, luati un arbore cu 4 niveluri si scrieti ce se intampla la fiecare apel al lui nivel. Intrucat subprogramul de mai sus afiseaza toate nodurile ce se afla pe un nivel k, pentru a afisa nodurile ce se afla pe fiecare nivel al arborelui, trebuie apelat subprogramul pentru fiecare nivel. Pentru asta ne trebuie sa stim numarul de niveluri din arbore. Fie urmatorul subprogram nr_nivel(r) ce calculeaza numarul de niveluri din arborele r. -- arborele vid nu are niciun nivel -- un arbore nevid are nr de niveluri = max {1 + nr de niveluri al subarborelui stang, 1 + nr de niveluri al subarborelui drept}
int nr_nivel(arb *r) { int s, d; if (r == NULL) return 0; else { s = nr_nivel(r->st); d = nr_nivel(r->dr); if (s > d) return s+1; else return d+1; } } 1

Duma Stefania

Laborator 6 ASD

TEMA: Folosind aceste doua subprograme, scrieti un subprogram citire ce va citi nodurile arborelui si un subprogram afisare ce va afisa nodurile arborelui pe niveluri.

Arbori binari de cautare Definitie: Un arbore binar ale carui chei iau valori de un tip total ordonat se numeste arbore binar de cautare (abc) daca cheia fiecarui nod este mare decat orice cheie din fiul sau stang si mai mica decat orice cheie din fiul sau drept. Intr-un abc, pentru orice nod u avem relatiile: 1) info[u] > info[v], 2) info[u] < info[w], pentru orice v left[u] pentru orice w right[u]

Observatii: 1. Un abc este strict daca nu contine chei multiple (nu se repeta valori in arbore). 2. Un abc parcurs in inordine ne da o lista ordonata crescator a cheilor sale. Exemplu de creare de abc inserand pe rand nodurile: 55, 33, 44, 77, 11, 99, 66

TEMA: Scrieti programul ce creeaza un abc, iar pentru afisare apelati procedura de afisare in inordine (laborator 5). TEMA: Scrieti un subprogram ce returneaza un pointer catre nodul ce contine cea mai mica cheie dintr-un abc de radacina root.
2

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