Documente Academic
Documente Profesional
Documente Cultură
Cursul 12
Cursul 12
Arborii sunt structuri de date dinamice i omogene. Cele mai comune utilizri ale arborilor sunt cutarea n volume mari de date i reprezentarea de structuri organizate ierarhic.
1. Arbori oarecare
Arborii oarecare sunt colecii de noduri care conin informaia util i legturi ctre descendeni. Fiecare arbore conine un nod iniial numit rdcin. Structura unui arbore oarecare este prezentat n figura urmtoare:
Pentru implementarea unui arbore oarecare n C/C++ se poate folosi o structur de forma:
// tipul de date al informatiilor utile typedef double TipArbore; // structura care reprezinta un nod din arbore struct NodArbore { // informatiile utile stocate in nod TipArbore Informatii; // numarul de legaturi catre fii int numarLegaturi; // vector de legaturi catre fii NodArbore **Legaturi; };
Fiecare nod conine informaiile utile, un ntreg care reine numrul de fii i un vector de pointeri ctre fii. Principalele operaii care pot fi implementate pe un arbore oarecare sunt:
Descriere Adaug un nod n arbore dup un anumit criteriu (de exemplu la un anumit nod printe). Operaia presupune alocarea memoriei pentru nod, copierea informaiei utile i modificarea legturii printelui.
Presupune dealocarea memoriei pentru nodul respectiv i pentru toi descendenii si i modificarea legturii printelui. Presupune obinerea unei liste care conine toate informaiile utile din arbore. Presupune obinerea unui pointer la un nod pe baza unui criteriu de regsire.
2. Arbori binari
Arborii binari sunt arbori n care nodurile conin cel mult doi descendeni. Pentru memorarea acestor arbori se poate folosi o structur mai simpl de forma:
// tipul de date al informatiilor utile typedef double TipArbore; // structura care reprezinta un nod // dintr-un arbore binar struct NodArbore { // informatiile utile stocate in nod TipArbore Informatii; // vector de legaturi catre fii NodArbore *Stanga, *Dreapta; };
Operaiile sunt aceleai ca i n cazul arborilor oarecare. Exemplu: parcurgerea arborelui n ordinea stnga rdcin - dreapta i stocarea elementelor ntr-o list: