Sunteți pe pagina 1din 13

Cap.

7 Structura de date arbore


7.1 Definitii

 Proprietati ale relatiei de precedenta:


V = { a, b, c, …}
1. Pt. orice a apartinand lui V : a nu il precede pe a
2. Daca a il precede pe b si b il precede pe c, atunci a il precede pe c
3. Daca a si b apartin lui V si a diferit de b, atunci fie a il precede pe b, fie b il
precede pe a
 Proprietatea specifica structurii de vector: a si b apartin lui V si a il precede
pe b, daca nu exista nici un c apartinand lui V astfel incat a il precede pe c
si c il precede pe b, atunci b este succesorul lui a; specific vectorului este
ca orice element cu exceptia ultimului are un singur succesor
 Structura de arbore admite ca orice element sa aiba un numar diferit de
succesori, cu restrictia ca doua elemente nu pot avea aceeasi succesori

SDA curs 12 I IS 2009/2010 1


 Relatia de succesor indusa pe structura de arbore A conduce la
urmatoarele proprietati:
A = { a, b, c, …}
1. Pt. orice a apartinand lui A : a nu il precede pe a
2. Daca a il precede pe b si b il precede pe c, atunci a il precede pe c
3. Pentru orice b si c apartinand lui A astfel incat b nu il precede pe c si c
nu il precede pe a, daca b il precede pe d si c il precede pe e, atunci d
este diferit de e
4. Daca A nu este o multime vida, atunci exista cel putin un element numit
radacina, care precede toate celelalte elemente
 Definitie recursiva: O multime formata din n>=0 elemente de acelasi tip
numite noduri, care, daca nu e vida ( n=0), are un anumit nod numit
radacina, iar restul nodurilor formeaza un numar finit de arbori doi cate
doi disjuncti

SDA curs 12 I IS 2009/2010 2


Notiuni

 subarbore
 succesorul unui nod ( fiu)
 primul fiu ( cel mai din stanga)
 frate drept
 nivel
 inaltime arbore ( numarul maxim de niveluri)
 gradul unui nod ( numarul de succesori)
 inaltimea unui nod: lungimea celui mai lung drum de la nodul respectiv la un
nod terminal
 adancimea unui nod: lungimea drumului unic de la radacina pana la nodul
respectiv
 Pasul intern: lungimea medie a drumurilor de la radacina la un nod
 Pasul extern: lungimea medie a drumurilor la toate nodurile speciale;nod
special este nodul completat astfel incat toate nodurile arborelui sa fie de
acelasi grad

SDA curs 12 I IS 2009/2010 3


7.3 Traversarea arborilor

 Nodurile sunt procesate ( vizitate) intr-o anumita ordine, rezultand astfel o


lista liniara ( liniarizare):
1. Preordine: R, PRE (A1), PRE(A2), …, PRE (Ak)
2. Inordine: INO (A1), R, INO(A2), …, INO(Ak)
3. Postordine: POST(A1), POST(A2), …, POST(Ak), R
 Definitia recursiva a structurii de arbore presupune ca subarborii sai s-au
ordonat deja
 Daca arborele A este vid , atunci ordonarea lui in toate cele trei moduri se
reduce la o lista vida
 Daca arborele A este format dintr-un singur nod, respectiv radacina, atunci
ordonarea lui in toate cele trei moduri se reduce la o lista continand doar
nodul radacina
 Uzual se realizeaza parcurgerea arborilor in sens trigonometric pozitiv,
ramanand cat mai aproape de noduri

SDA curs 12 I IS 2009/2010 4


 Preordine : nodurile se proceseaza prima oara cand sunt intalnite
 Postordine: nodurile se proceseaza la o a doua trecere
 Inordine: nodurile terminale se proceseaza prima data cand sunt intalnite, iar
nodurile interne a doua oara
 Nodurile terminale, in toate cele trei variante de parcurgere, sunt procesate in
aceeasi ordine
 cele trei moduri de traversare sunt variante ale algoritmului de cautare in
adancime
 O alta metoda de cautare ( implicit si de traversare) este cautarea pe nivel
 Implementarea algoritmilor de traversare a arborilor ( cautare) se realizeaza
atat prin variante recursive, cat si nerecursive; sunt necesare structuri
suplimentare ( cozi, stive) pentru pastrarea informatiilor care urmeaza sa fie
procesate

SDA curs 12 I IS 2009/2010 5


7.3 TDA arbore ( arbore generalizat)

I MM – definit in 7.1
II Notatii: TipNod N;
TipArbore A;
TipCheie …
III Operatori:
TipNod Tata(N, A);/* predecesor(N, A); parinte(N,A);*/
TipNod PrimulFiu(N,A); Insereaza (N, A)
TipNod FrateDrept(N,A); Sterge (N,A)
TipCheie Cheie(N,A); Preordine(A,…)
Creeaza_i(v, A1, A2,…, Ai) Postordine(A,…)
TipNod Radacina(A) Inordine(A,…)
Initializare(A)

SDA curs 12 I IS 2009/2010 6


Implementarea arborilor generali
a)implementarea arborilor cu tablouri

 Fie A un arbore cu n noduri. Nodurile se numeroteaza arbitrar de la 1 la


n. Fiecarui nod i se asociaza un element din tablou (nodul i –> a[i])
 Cea mai simpla reprezentarea prin tablori a arborelui A , care permite
implementarea facila a operatoruili Tata este cea care memoreaza la
intrarea a[i] in tablou un cursor care indica parintele nodului i; aceasta
varianta implementeaza dificil operatorii PrimulFiu si FrateDrept;
parcurgerea in directia nod-.parinte se realizeaza intr-un timp
proportional cu adancimea
 Restrictii: in numerotarea initiala a nodurilor, numerotarea fiilor se
realizeaza numai dupa ce nodul parinte a fost numerotat, numerele
fiilor fiind atribuite crescator de la stanga la dreapta, in ordinea in care
apar in reprezentare

SDA curs 12 I IS 2009/2010 7


b. Implementarea arborilor cu liste

1. Pentru fiecare nod al arborelui se creeaza o lista inlantuita cu succesorii


acestuia
typedef struct nod {
int indice;
struct nod * urm;
}TipNodLista;
typedef struct nod * TipPointerNod;
typedef struct{
TipLista inceput[MaxNod];
TipCheie chei[MaxNod];
TipNod radacina;
}TipArbore;
2. Liste implementate cu cursori

SDA curs 12 I IS 2009/2010 8


c. Implementarea cu pointeri

 Ete posibila daca se admite un grad maxim pentru noduri

typedef struct nod {


TipCheie cheie;
TipInfo info;
Struct nod *succ1, * succ2, *succ3;
}TipNod;
Typedef TipNod * TipArbore;

SDA curs 12 I IS 2009/2010 9


7. 4 Arbori binari

 O multime de n>=0 elemente numite noduri, care daca nu este vida


contine un anumit nod numit radacina, iar restul nodurilor formeaza 2
arbori binari disjuncti , numiti subarbore stang si subarbore drept
 Se mai numesc si arbori de parcurgere, fiind asociati prelucrarii
expresiilor aritmetice
 Structura de arbore binar este importanta:
- Este usor de reprezentat si de prelucrat
- Se bucura de prorietati specifice, fata de proprietatile arborilor generali
- Orice structura de arbore general poate fi tranformata in arbore binar
Obs. Se considera radacina arborelui general ca radacina a rborelui binar.
Primul subarbore A11 devine fiul stang, iar subarborii A1i devin frati
drepti ai subarborilor A 1i-1 pantru i=2…k. Se continua in aceeasi
maniera pentru fiecare din subarborii astfel rezultati. Arborele binar
generat depinde de ordinea in care sunt procesati succesorii.
- Traversarea preorder a arborelui general corespunde traversarii
preorder a arborelui binar

SDA curs 12 I IS 2009/2010 10


TDA arbore binar

 I MM
 II Notatii
 III Operatori

SDA curs 12 I IS 2009/2010 11


Implementarea arborilor binari

a.Cu tablouri si cursori


typedef int TipPointerNod;
typedef struct {
char ch;
TipPointerNod stg, dr;
}TipNod;
TipNod tab[MaxNod];
b. Cu tablouri si fara cursori
Numarul maxim de noduri care poata sa apara pe nivelul I al unui arbore
binar este 2 i-1.
Numarul maxinm de noduri apartinand unui arbore de inaltimea h este 2h-1
 Arborele binar care are exact 2h-1noduri se numeste arbore binar plin.
c. Cu pointeri

SDA curs 12 I IS 2009/2010 12


Tipuri de arbori binari

 Arbori de cautare

 Arbori de selectie

SDA curs 12 I IS 2009/2010 13

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