Sunteți pe pagina 1din 11

Arborii

în limbajul C++
Exemple de arbori:
-arbore genealogic,
-o ierarhie de comandă într-o firmă,
Definitie: Arborele este un graf neorientat conex fără
cicluri în care unul din noduri este desemnat ca rădăcină.
Nodurile pot fi aşezate pe niveluri începând cu rădăcina
care este plasată pe nivelul 1.
Radacina unui arbore este un nod special care ajuta la
delimitarea arborelui pe nivele. Acest nod se afla pe cel
mai inalt nivel din arbore.
Avantaje:
-arborele devine mai usor de parcurs, deoarece plasarea
nodurilor pe nivele duce la o structurare mai eficienta a
informatiilor.
- algoritmii ce folosesc arbori sunt foarte usor de
implementat recursiv, deoarece la fiecare pas, putem
separa arborele in mai multi arbori mai mici.
Definiţie:Se numeşte arborescenţă un arbore caracterizat
astfel:
-are un vârf special numit rădăcină;
-celelalte noduri pot fi grupate în p>=0 mulţimi disjuncte,
astfel încât fiecare dintre aceste mulţimi  să conţină un
nod adiacent cu rădăcina iar subgrafurile generate de
acestea să fie la rândul lor arborescenţe.
OBSERVAŢII!
1.Dacă o arborescenţă este formată dintr-un singur nod
spunem că este formată doar din nodul rădăcină.
2.Dacă ordinea relativă a arborescenţelor, are importanţă,
arborescenţa se numeşte se numeşte arbore ordonat.
In concluzie:
Un arbore este compus dintr-o colecţie de noduri,
unde fiecare nod are asociată o anumită
informaţie şi o colecţie de copii. Copiii (fii) unui
nod sunt acele noduri care urmează imediat sub
nodul însăşi.
Părintele unui nod este acel nod care se află
imediat deasupra.
Rădăcina unui arbore este acel nod unic, care nu
are nici un părinte.
Noțiuni
• Un nod A este descendent al unui alt nod B, daca este situat pe un nivel mai
mare decât B şi există un lanţ care le uneşte şi nu trece prin
Exemplu: In arborele de mai sus E este descendentul lui B, si al lui A.
• Un nod A este fiu/descendent direct al unui alt nod B, daca este situat pe nivelul
imediat urmator nodului B si exista muchie intre A si B.
Exemplu: In arborele de mai sus B si G sunt fii lui F(nodul radacina), A e fiul lui B, H
e fiul lui I etc.
• Un nod A este ascendent al unui alt nod B, daca este situat pe un nivel mai mic
decat B si exista lant care le uneste si nu trece prin radacina.
Exemplu : In arborele de mai sus G este ascendentul lui H,B este ascendentul lui C.
• Un nod A este parinte al unui alt nod B, daca este situat pe nivelui imediat
superior nodului B si exista muchie intre A si B.
Exemplu: In arborele de mai sus F este parintele lui B,D este parintele lui E, I este
parintele lui H etc.
• Doua noduri sunt frati daca au acelasi parinte.
Exemplu : B si G sunt frati, A si D sunt frati.
• Un nod este frunza daca nu are niciun fiu, adica este nod terminal.
Exemplu : In arborele nostru frunzele sunt C,E si H.
REPREZENTAREA ARBORILOR
Deoarece arborele este un graf, putem spune că printre
metodele de reprezentare a arborilor se numără şi
metodele de reprezentare a grafurilor, cum ar fi:
-reprezentarea prin matricea de adiacenţă;
-reprezentarea prin listele de adiacenţă;
-reprezentarea prin şirul muchiilor;
Modalităţile de reprezentare specifice arborilor :
-reprezentarea standard:
1.cu ajutorul vectorilor
2.folosind alocarea dinamică
-reprezentarea cu ajutorul legăturilor Tata.
 
Reprezenarea cu ajutorul legăturii tata

Arborele se reprezinta sub forma unui vector t cu n componente (n


reprezinta numarul de noduri). Daca t[i]=k atunci nodul I este
descendent al nodului k. Daca nodul I este varf atunci t[i]=0.
Aplicatii
1. Dintr-un fisier se citesc : numarul de noduri
apoi vectorul de tip tata.
a) sa se determine radacina
b) afisati frunzele (nodurile terminale)
c) pentru un nod citit sa se determine: fii si
parintele
d) sa se determine nodul cu cei mai multi
descendenti
2.Arbore genealogic.
Dintr-un fisier se citesc numele a n persoane. Persoanele sunt numerotate de la 1 la
n. In continuare se citesc m perechi de nume x y cu semnificatia x este parintele lui y.
Sa se determine:
a)       stramosul comun
b)       persoanele fara descendenti
c)        parintele unei persoane al carei nume se citeste de la tastatura
d)       fii unei persoane al carei nume se citeste de la tastatura
e)       daca doua personae al caror nume se citesc de la tastatura sunt frati
f)         toti ascendentii unei personae
g)       toti descendentii unei persoane
h)       sa se determine bunicul unei persoane
i)         se citesc numele a doua persoane x,y. Sa se determine daca x este ascendentul
lui y (direct sau indirect)
j)         din a cata generatie face parte o persoana citita?
k)        Cate generatii are arborele
l)         verii unei persoane

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