Arbori generalizati - Laborator Proiectarea si Analiza Algoritmilor
Laboratorr Proiectarea si Analiza Laborato Algoritmilor Home
Home >
Calendar
Arbori generalizati
Regulament
Definitii Un arbore este o colectie colectie de nodur i si arce care care satisfac anumit anumit e cerint cerint e. Fieca iecarui rui nod i se pot asoc asocia ia date. Un nod este radacina radacina arborelui, arborelui, restul restul noduril or f ormand un numar f init de arbori (subarbori), (subarbori), doi cate cate doi disjuncti. Un arc conectea conecteaza za doua nodur i d istin cte ale arbor arbor elui. O cale (drum) intr- un arbore este este o lista de noduri distincte in care nodurile succe succesive sive sunt conecta conectate te pr in arc arce. e. Intr- un arbore exista exista o cale si si numai una intr e oricare oricare doua noduri ale arborelui. arborelui. Intr- un arbore se se de definesc finesc mai multe niveluri, radac radacina ina fi ind situata pe nivelul 1. Un nod x este pe un nivel superior supe rior unui nod y daca x se gaseste pe calea de la nodul y la radacina. Tipuri de relatii relatii i ntre noduri: imediat ur mator unui nod y si conectat conectat de y p r i n t r - u n a r c s e n um um e st st e p a r i n t e: nodul x situat pe nivelul imediat parintele lui y, f i u : succesorii succesorii di recti ai unui nod se numesc f ii sai, f r a t e: succe succesorii sorii dir ec ecti ti ai unui nod sunt frati intre ei.
Nivelul maxim al arborelui se numeste inaltimea arborelui . Lungimea celui Lungimea celui m ai lung drum de la un nod x la un nod terminal (nod f runza) se se numeste numeste inaltimea nodului x . adancimea ncimea nodului x . Lungimea drumu lui de la radacina radacina la un nod x se numeste ada
Numarul f iilor unui nod se numeste Numarul numeste g r a d u l n o d u l u i . Gradul Gradul m axim al noduril or arbor elui se numeste gradul arborelui .
Translate
Traversarea Trave rsarea arbo arbo ril or Traversarea unui arbor e este Traversarea este pr oce ocesul sul d e aplicare a unei operatii (exa (examinare, minare, actualizare) actualizare) asupra f ieca iecarui rui nod al unui arbore. In timpul travers traversarii arii nodurile arborelui sunt prelucrate prelucrate intr- o anumita ordine. In In functie de ordinea prelucrarii preluc rarii se disting trei moduri de a traversa traversa un arbore arbore:: preordine , i n o r d i n e si p o s t o r d i n e. Cele Ce le trei modur i se definesc recursiv recursiv astfel:
Arbori generalizati - Laborator Proiectarea si Analiza Algoritmilor
daca arborele A este vid atunci ordonarea in pr eordine, inordine sau postord ine este vida, daca arborele daca arborele A este format di ntr- un singur nod, atunci atunci ordonarea este este formata din ac acel el nod, alfel, se considera considera arborele A ca fii nd f ormat din radacina R si subarbor ii A1, A2,.. A2,..., ., An; traversarea lui A in: 1 . preordine : inseamna prelucrarea lui R, apoi t raversare raversarea a in preordin e a subarbor ilor A1, A2,.. A2,...., An. 2 . i n o r d i n e: inseamna inseamna t raversare raversarea a in i nordin e a lui A1, apoi prelucrarea lui R, apoi tr ave aversarea rsarea in inor dine a subarborilor A2,..., An. 3 . p o s t o r d i n e: inseamna tr ave aversarea rsarea in postordi ne a subarbori lor A1, A2,.. A2,...., An, apoi pr elucrarea lui R. Exemplu : Se Se considera arborele generalizat generalizat din fig ura de m ai jos:
Traversar ea in pr eordi ne genereaza secventa secventa d e nodu ri : a, b, e, i, f, c, g, j, d, h Traversar ea in ino rdi ne genereaza secventa secventa de n odur i: i, e, b, f, a, j, g, c, h, d Traversar ea in post ord ine gener eaza secventa secventa de nod ur i: i, e, f, b, j, g, c, h, d, a
Tehnici Te hnici de impl ementa ementare re 1. Imple Implementa mentarea rea cu ajutorul t ipului tablou Pentru ac acea easta sta reprezentare se considera ca nodur ile arbor elui A sunt numerotate d e l a 0 l a n - 1 . Nodurile sunt stocate stoc ate intr- un tablou de dimensiune dimensiune n as astfel tfel i nca ncatt nodul cu numarul i sa se gaseasc gaseasca a pe pozi ti a i a tabloului. Fieca iecare re element al tabloulu i va avea doua campuri: campuri: un ca camp mp va conti ne infor matia uti la din nod, iar un al doilea camp ca mp va contine indicele indicele nodului parinte in tablou (- 1 pentru nodul rada radacina cina). ). struct nod_arbore { tip_info info_utila; int index_parinte; }; struct nod_arbore arb[n];
Conventional, Co nventional, numerot area nodurilor se face face de sus in jos si de la stanga la dreapta. Exemplu :
Dezavantaje: Presupun resupune e stabilirea aa- priori a dimensiunii arborelui arborelui si a numarului de f ii ai f iec iecarui arui nod. Operatii Ope ratii prec precum um dete determinarea rminarea fiilor unui nod sa sau u ca calcula lcularea rea inaltimii arbore arborelui lui sunt costisitoare. costisitoare. Reprezentare eprezentarea a nu ca capteaza pteaza ordin ea fiilor unui nod d ec ecat at dac daca a se respecta respecta conventia conventia de numerot are recomandata.
Arbori generalizati - Laborator Proiectarea si Analiza Algoritmilor
2. Imple Implementa mentarea rea cu ajutorul t ipului lista In acea aceasta sta im plementare, pentru fi ec ecare are nod al arborelui se va crea o lista a fii lor sai. Indicatorii de inceput ai listelor de f ii vor f i pastrati tot intr- o structura de t ip tablou. Fiec iecare are eleme element nt al t abloului va avea avea doua doua campuri: campuri: un camp va contine infor matia uti la din nod, iar un al doilea camp camp va contine indi ca cator tor ul de inceput al list ei de fii a nodului. struct fiu { int index; struct fiu *urm; }; struct nod_arbore { tip_info info_utila; struct fiu *lista_fii; }; struct arbore { struct nod_arbore noduri[n]; int index_radacina index_radacina; ; }; struct arbore arb;
Exemplu:
Dezavantaje: In cazul cazul cel mai nefavorabil, determin area parint parint elui unui nod x presupune cautarea nodului x in toate listele de fii.
3. Implementarea bazata bazata pe relatiile p r i m - f i u si frate- drept Este o im plementare mai avantajoasa, avantajoasa, spatiul f olosit pentru st oca ocarea rea unui arbore cu n noduri fi ind O(n). Nodurile arborelui sunt st oca ocate te int r- un t ablou. Fieca iecare re element al tabloului va avea patru campuri: 1. un camp va con contine tine informatia utila din nod, 2. un camp va c contine ontine indexul indexul in tablou al celui celui mai din stanga fiu (- 1 pentru nodurile terminale), terminale), 3. un camp va contine contine indexu indexull in tablou al fratelui din dreapta dreapta al nodului (- 1 daca daca nu exista exista un f rate in dreapta), 4. un camp va contine contine indexul indexul parintelui (- 1 pentru nodul rada radacina cina). ). struct nod_arbore { tip_info info_utila; int prim_fiu; int frate_drept; int parinte; }; struct arbore { struct nod_arbore noduri[n]; int index_radacina index_radacina; ; }; struct arbore arb;
Exemplu:
Arbori generalizati - Laborator Proiectarea si Analiza Algoritmilor
4. Implementarea ca multilista Este tot implementa implementare re bazata bazata pe relatiile prim- fiu si fr ate- drept doar ca pentru stocarea stocarea nodurilor se vor vor f olosi liste simplu inlantuite si pointeri. struct nod_arbore { tip_info info_utila; struct nod_arbore *prim_fiu; struct nod_arbore *frate_drept *frate_drept; ; struct nod_arbore *parinte; }; struct arbore *radacina;
Exemplu:
Aplicatii I. Sa se impl ementeze un arbor e binar generalizat folosind tehnica bazata bazata pe relatii relatii le prim - fiu si fr ate drept. Infor matia uti la (cheia) (cheia) asocia asociata ta fiecarui nod este un numar intr eg. Se vor im plementa operatiile: 1.
initializeaza
- distr uge arborele daca daca exista exista si creeaza creeaza un nou arbore
2.
insereaza_cheie(int cheie, int cheie_parinte)
- inserea insereaza za in arbore un nod cu cheia spec specif if icata ca ca si fi u
al nodul ui ava avand nd che cheia ia cheie_parint cheie_parint e 3.
int cauta_cheie(int cheie)
- ca cauta uta che cheia ia specifi specifi ca cata ta in arbore; daca daca exista un nod ava avand nd che cheia ia data se
retur nea neaza za indicele nodului , alfel alfel se returneaza - 1 4.
sterge_cheie(int cheie)
5.
preordine()
6.
inordine()
7.
postordine()
8.
int inaltime_arbore() -
9.
int grad_arbore()
- sterge cheia cheia specificata specificata din arbore
- traversea traverseaza za arbor arbor ele in pr eordine si afiseaza cheile cheile noduri lor
- traversea traverseaza za arbor arbor ele in inor dine si afiseaza afiseaza cheile cheile nodur ilor - tr ave averseaza rseaza arborele in postordi ne si afiseaza afiseaza cheile cheile nodur ilor returneaza returnea za inaltimea arborelui arborelui
- returnea returneaza za gradul arborelui arborelui
II. Sa se implementeze un arbore binar generalizat f olosind m ult ilist e. Inform atia util a (cheia) (cheia) asocia asociata ta fi ec ecarui arui n od este un numar in tr eg. Se vor imp lementa operatiile: - distr uge arborele daca daca exista exista si creeaza creeaza un nou arbore
1.
initializeaza
2.
insereaza_cheie(int cheie, int cheie_parinte)
3.
al nodul ui ava avand nd che cheia ia cheie_ cheie_parint parint e cauta_cheie(int cheie) - ca cauta uta che cheia ia specifi specifi ca cata ta in arbore; daca daca exista un nod ava avand nd che cheia ia data se
4.
retur nea neaza za nodul , alfel se returneaza NULL NULL sterge_cheie(int cheie) - sterge cheia cheia specificata specificata din arbore
- inserea insereaza za in arbore un nod cu cheia spec specif if icata ca ca si fi u
Arbori generalizati - Laborator Proiectarea si Analiza Algoritmilor
5.
preordine()
- traversea traverseaza za arbor arbor ele in pr eordine si afiseaza cheile cheile noduri lor
6.
inordine()
7.
postordine()
8.
int inaltime_arbore() -
9.
int grad_arbore()
- traversea traverseaza za arbor arbor ele in inor dine si afiseaza afiseaza cheile cheile nodur ilor - tr ave averseaza rseaza arborele in postordi ne si afiseaza afiseaza cheile cheile nodur ilor returneaza returnea za inaltimea arborelui arborelui
- returnea returneaza za gradul arborelui arborelui
Copyright Co pyright 2011 Ge Georgiana orgiana Macariu Macariu Sign in
Recent Site Activity
Terms
Report Abuse
Print page |
Powered b y Google Sites