Sunteți pe pagina 1din 4

Arbori

1. Introducere
O categorie important de grafuri este aceea n care muchiile sunt niste legturi de tip
printe - fiu. Un astfel de graf se va numi arbore. Pentru a nelege semnificaia unei legturi de
tip printe - fiu dm exemplu o persoan X care are trei copii. Pentru cei trei copii, X este printe.
Fiecare copil se va cstori i va avea ali copii, devenind la rndul lui printe. i nepoii lui X vor
urma acelai drum i vor avea la rndul lor ali copii. Astfel am descris arborele genealogic al unei
familii.
O structur de date de tip arbore este foarte apropiat de arborele genealogic. Se presupune
c fiecare nod posed nite legturi spre alte dou noduri numite fii, nodul n cauz se numete
printe. Oricare dintre noduri poate avea niste legturi nule. Acele noduri terminale se numesc
terminale sau frunze. Unul din noduri are o poziie privilegiat n sensul c nu este fiul nimnui.
Acest nod se numete rdcin. n cazul arborilor, n loc de vrfuri i muchii se folosesc termenii
sinonimi noduri i arce.
Un graf conex i fr cicluri se numete arbore.
Un arbore cu n vrfuri are n-1 muchii.
Un arbore este un graf cu cteva proprieti specifice:
- exist un nod n care nu intr nici un arc numit rdcina arborelui
- cu excepia rdcinii, fiecare nod are proprietatea c n el intr un singur arc. Arcul leag
nodul respectiv de u nalt nod numit predecesor sau printe.
- Dintr-un nod pot iei unul sau mai multe arce. Fiecare astfel de arc leag nodul respectiv
de un alt nod numit succesor sau fiu al nodului.
- Nodurile sunt organizate pe nivele. Primul nivel este ocupat de nodul rdcin. Nodurile
de pe ultimul nivel sunt caracterizate prin faptul c din ele nu mai iese nici un arc i se
numesc noduri terminale sau frunze.
- Nodurile pot conine o aa numit informaie util care poate fi de orice tip. De obicei
aceste informaii se mai numesc i chei ale arborelui.
Exemplu:
1

Nivel 1

Nivel 2

Nivel 3

Nivel 4

n figura de mai sus, avem:


- nodul 1 este rdcina arborelui (de pe nivelul 1)
1

frunzele arborelui sunt: nodul 3, (de pe nivelul 2), nodurile 5 i 7 (de pe nivelul 3) i
nodurile 8 i 8 (de pe nivelul 4)
succesorii nodului 2 sunt nodurile 5 i 6. La rndul su, 6 are ca predecesor nodul 2.

Tem:
Pentru arborele reprezentat mai jos, identificai: rdcina, predecesorii, succesorii, frunzele.
1

2. Arbori binari
Un arbore cu proprietatea c fiecare nod cu excepia frunzelor are cel mult doi descendeni
(succesori) se numete arbore binar
ntr-un arbore binar, cei doi succesori ai unui nod (dac exist) se numesc succesor drept respectiv
succesor stng.
Un arbore cu proprietatea s fiecare nod, cu excepia frunzelor are exact doi descendeni (succesori)
se numete arbore binar complet.
3. Reprezentarea arborilor binari
Numerotnd nodurile arborelui cu 1,2,...,n exist mai multe forme prin care putem reprezenta un
arbore binar n memoria calculatorului folosind fie alocarea static fie alocarea dinamic.
1
2

3
4

5
6

7
8
A. Reprezentarea static
a). Se specific rdcina r i definim doi vectori S respectiv D care vod conine succesorii nodurilor
astfel:
- S[i] reprezint nodul successor stng al nodului i cu i=1,2,...,n
- D[i] reprezint nodul successor drept al nodului i cu i=1,2,...,n
- Dac nu exist succesor, elementul n cauz va fi 0. Este cazul nodului 2 din figura de
mai sus care nu are succesor stng deci S[2]=0.

n arborele din figura de mai sus, succesorul stng al nodului 3 este nodul 5 deci S[3]=5 iar
succesorul drept al nodului 3 este 6 deci D[3]=6. n acelai arbore, nodul 5 nu are nici succesor
stng nici succesor drept (este frunz). Prin urmare, S[5]=0 i D[5]=0. Cei doi vectori sunt:
i
S[i
]

1 2 3 4 5 6 7 8
2 0 5 0 0 7 0 0

i
1 2 3 4 5 6 7 8
D[i] 3 4 6 0 0 8 0 0
b). Definim doi vectori:
- vectorul P memoreaz prinii (predecesorii) nodurilor arborelui . Astfel P[i] reprezint
predecesorul nodului i cu i=1,2,...,n. Neexistnd printe al rdcinii vom nota P[1]=0.
- Vectorul T indic pentru fiecare nod, ce fel de succesor al printelui este nodul: stng sau
drept. Astfel, T[i] va fi -1 sau 1 dup cum nodul i provine din printele su ca succesor
stng respectiv drept (i=1,2,...,n). Deoarece nodul 1 nu are printe, vom lua T[1]=0.
n exemplul de mai sus, printele nodului 5 este nodul 3 deci P[5]=3 iar nodul 5 provine din
printele su ca succesor stng deci T[5]=-1. Cei doi vectori sunt:
i
1 2 3 4 5 6 7 8
P[i] 0 1 1 2 3 3 6 6
i
1 2 3 4 5 6 7 8
T[i] 0 -1 1 1 -1 1 -1 1
Indiferent c am ales forma a) sau b) de reprezentare, mai putem defini un al treilea vector, fie
acesta INF care s memoreze informaiile utile aferente nodurilor. Astfel, INF[i] va conine
informaia nodului i cu i=1,2,...,n.
B. Reprezentarea dinamic cu ajutorul pointerilor
ntruct pointerii nu au fost studiai aceast form de reprezentare se va studia mai trziu.
Tem:
Pentru arborii de mai jos, construii:
- vectorii S si D din prima form de reprezentare static
- vectorii P i T din a doua form de reprezentare static.
1
2

5
6
7

1
2
4

3
5
6

7
8