Documente Academic
Documente Profesional
Documente Cultură
STRUCTURI ARBORESCENTE
arbore, de examinare sistematic a nodurilor lui n aa fel nct fiecare nod s fie considerat o
singur dat.
Pentru arbori oarecare se folosesc urmtoarele parcurgeri:
parcurgerea n preordine, n care se prelucreaz rdcina, apoi se parcurg n preordine
subarborii acestei rdcini;
parcurgerea n postordine, n care se parcurg n postordine subarborii corespunztori
rdcinii apoi se prelucreaz rdcina.
Pot fi efectuate i alte tipuri de operaii cu arbori cum ar fi adugarea unor noi noduri,
eliminarea unor noduri, combinarea a doi sau mai muli arbori, copierea unui arbore i altele
asemenea.
Pentru parcurgerea unui arbore reprezentat sub aceast form este necesar o stiv n care
se pstreaz adresele celulelor din care urmeaz s se plece dup partea de legtur sau chiar
aceste legturi (eliminnd legturile nule). Prezentm n continuare un algoritm care parcurge
structura corespunztoare unui arbore i d cuvntul liniar cu paranteze corespunztor lui. Se
noteaz celulele prin Ei, adresa primei celule prin init, marcajul celulei prin M(Ei), partea de dat
prin D(Ei) i partea de legtur (adres) prin A(Ei). Se folosete de asemenea o stiv S care
memoreaz adresa celulelor care urmeaz s li se ia partea de legtur pentru a parcurge mai
departe structura i un indicator k pentru a indica dac trebuie s se deschid sau s se nchid
paranteza.
1.
2.
3.
4.
5.
6.
7.
8.
Se poate face parcurgerea arborelui fr o stiv suplimentar dac n loc s punem zero n
partea de legtur a ultimului element al unei liste ce corespunde unui nod diferit de rdcin
punem o legtur la celula din care s-a ajuns la aceast list. Se obine astfel o structur de liste
numit structur filetat sau circular. Vom numi legturile adugate adrese de ntoarcere. n
acest caz se folosesc dou marcaje pentru fiecare celul. Primul marcaj este cel anterior, 0 sau 1
dup cum celula este de date sau de legtur, i al doilea marcaj este 1 sau 0, dup cum celula
3
corespunztoare este ultima n list sau nu. Ultima celul a listei corespunztoare rdcinii conine
0 n partea de legtur, aceasta indicnd sfritul structurii. De exemplu, n figura urmtoare este
reprezentat structura filetat ce corespunde la arborele din figura precedent. Adresele de
ntoarcere au fost reprezentate punctat.
1.
2.
3.
4.
5.
6.
7.
8.
Structurile de liste circulare nu pot fi folosite n cazul cnd o sublist este distribuit de
dou sau mai multe liste. Dac ns se folosesc mai multe elemente finale cu diferite adrese de
ntoarcere, atunci pentru parcurgere este necesar din nou folosirea unei stive.
Structurile de liste prezentate pot fi parcurse fr stiv numai ntr-un singur sens. Pentru a
parcurge aceste structuri n ambele sensuri, fiecare celul a listei este prevzut cu cte dou
legturi, una ctre elementul care l precede logic i alta ctre cel care l seccede. Aceste structuri
de liste se numesc structuri simetrice.
Un
alt
mod
de
reprezentare
a
arborilor
oarecare este folosirea unor
celule ce conin cmpurile:
INFO n care se pun datele
asociate nodului respectiv, FIU
care conine legtura la celula
n care se afl primul dintre fii
nodului i FRATE care conine
legtura la celula n care se afl
urmtorul frate al nodului. n
unele aplicaii este util i un al
treilea cmp de legtur numit
TATA care conine legtura la
celula n care se afl tatl
nodului respectiv. De exemplu,
arborele din exemplul anterior
se poate reprezenta sub forma
alturat.
Pentru
toate
reprezentrile de arbori este
important de a cunoate
rdcina R a arborelui, deoarece
prelucrrile
ce
presupun
structuri arborescente se fac, de
obicei, plecnd de la rdcin
i urmnd diferitele legturi.
Sunt unele aplicaii care se pot rezolva prin a stabili dac dou elemente aparin sau nu
la un acelai arbore. Astfel de structuri se pot reprezenta prin celule care conin partea de
informaie i cte o legtur ctre tatl elementului. Rdcina fiecrui arbore are legtura 0.
Dou elemente aparin la acelai arbore dac rdcinile la care se ajung din ele coincid. Deci
este suficient de a pleca din fiecare element i urmnd legturile pn se ajunge ntr-un nod care
are legtura 0. Dac aceste noduri coincid, atunci cele dou noduri fac parte din acelai arbore,
altfel ele fac parte din arbori diferii. Pentru reuniunea a doi arbori de aceast form este
suficient s definim drept tat al rdcinii unuia dintre ei ca fiind rdcina celuilalt arbore.
Ca aplicaii pot fi determinarea componentelor conexe i tari conexe ale unui graf
direcionat, determinarea unui arbore parial de cost minim pentru un graf nedirecionat i
colorarea hrilor pe care le propunem ca exerciii.