You are on page 1of 3

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

Arbori.Arbori binari
Notiunea de arbore. O categorie importanta de grafuri sunt acelea in care muchiile sunt legaturi de tip parinte-fiu.Un astfel de graf se va numi arbore. Ca sa intelegem semnificatia unei legaturi de tipul parinte-fiu,este suficient sa va ganditi la urmatorul exemplu: sa presupunem ca o persoana X are trei copii. Pentru cei trei copii, X este parinte. Dar si nepotii lui X vor urma acelasi drum firesc si vor avea la randul lor alti copii, s.a.m.d. Am descris astfel ceea ce numim arborele genealogic al unei familii. (fig.1) vasile
ioana petru liana

sorin lucian carmen radu

dan sanda liviu delia valer ion simina

Fig.1 Def: Un graf conex si fara cicluri se numeste arbore. Teorema: Fie un graf G=(X,U). Urmatoarele afirmatii sunt echivalente: 1.G este arbore. 2.G este un graf conex, minimal in raport cu aceasta proprietate(eliminand o muchie oarecare, se obtine un graf neconex). 3.G este un graf fara cicluri, maximal in raport cu aceasta proprietate(adaugand o muchie oarecare, se obtine un graf care are cel putin un ciclu). Teorema: Un arbore cu n varfuri are n-1 muchii. Propozitie: 1.Un arbore cu n 2 vrfuri conine cel puin dou vrfuri terminale. 2. Fie G un graf neorientat. Un graf parial H al lui G, cu proprietatea c H este arbore, se numete arbore parial al lui G.(fig.2)

3 G-graf
Fig.2

3 H-arbore partial

3. Un graf neorientat care nu conine cicluri se numete pdure(multimea tuturor arborilor =graf fara cicluri).

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

4. Un arbore parial al unui graf neorientat conex poate fi definit ca un graf parial conex cu numr minim de muchii, sau un graf parial aciclic(fara cicluri) cu numr maxim de muchii.

Proprietati ce caracterizeaza un arbore: 1.Exista un nod in care nu intra nici un arc, numit nod radacina. 2.Cu exceptia radacinii,fiecare nod are proprietatea ca in el intra un singur arc. Acesta leaga nodul respectiv de un alt nod numit predecesor sau parinte. 3.Dintr-un nod pot iesi unul sau mai multe arce. Fiecare astfel de arc, leaga nodul respectiv de un alt nod numit succesor sau fiu al nodului. 4.Nodurile sunt organizate pe nivele, primul nivel fiind ocupat de nodul-radacina. Nodurile de pe ultimul nivel se caracterizeaza prin faptul ca din ele nu mai iese nici un arc, si se numesc noduri terminale sau frunze. 5.Nodurile pot contine o asa numita informatie utila, care poate fi de orice tip. De obicei aceste informatii se numesc chei ale arborelui. Ex: Fiind dat arborele din fig.3 avem: -nodul 1 este radacina arborelui.(nivelul 1) -frunzele arborelui sunt 3,5,7,8,9. -succesorii nodului 2 sunt 5 si 6; la randul sau 6 are ca predecesor nodul 2.

1 2 5 8 6 9
Fig.3

Nivel 1

4 7

Nivel 2 Nivel 3 Nivel 4

Notiunea de arbore binar. Def: Un arbore cu proprietatea ca fiecare nod, cu exceptia frunzelor, au cel mult doi descendenti(succesori) se numeste arbore binar.

1 2 5 8 6 9
Fig.4 2

Nivel 1

4 3 7
10

Nivel 2 Nivel 3 Nivel 4

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

Obs. Intr-un arbore binar, cei doi succesori ai unui nod (daca exista), se numesc succesor stang respectiv succesor drept. Def. Un arbore cu proprietatea ca fiecare nod, cu exceptia frunzelor, au exact doi descendenti(succesori) se numeste arbore binar complet. A. Reprezentarea statica, folosind vectori a. Specificam radacina r si definim doi vectori, S respectiv D, care contin succesorii nodurilor astfel: -S[i], reprezinta nodul succesor stang al nodului i, i=1,2,3,,n -D[i], reprezinta nodul succesor drept al nodului i, i=1,2,3,,n -daca nu exista succesor,elementul in cauza va fi 0. Ex: Fie arborele din fig.4 si ne propunem sa construim cei doi vectori S si D. i 1 S[i] 2 2 5 3 0 4 3 5 0 6 8 7 0 8 0 9 0 10 0

i 1 2 3 4 5 6 7 8 9 10 D[i] 4 6 0 7 0 9 10 0 0 0 b. Definim doi vectori P respectiv T: -vectorul P memoreaza parintii(predecesorii) nodurilor arborelui. Astfel P[i] reprezinta predecesorul nodului I, i=1,2,3,,n. Deoarece radacina nu are parinte P[1]=0. -vectorul T indica, pentru fiecare nod, ce fel de succesor al parintelui este nodul: stang sau drept. Astfel, T[i] va fi -1 sau 1, dupa cum nodul i provine din parintele sau ca succesor stang respectiv drept. Deoarece nodul 1 nu are parinte vom lua T[i]=0. i 1 P[i] 0 i T[i] 2 1 3 4 4 1 3 -1 5 2 6 2 7 4 8 6 9 6 10 7 9 1 10 1

1 2 0 -1

4 5 6 7 8 1 -1 1 1 -1

B. Reprezentarea dinamica cu ajutorul pointerilor -va fi prezentata in capitolul urmator