Documente Academic
Documente Profesional
Documente Cultură
SDA
Grupa 311CA - semigrupa a S se implementeze un program C care construiete un arbore binar de cutare cu c ei de tip caracter, utiliz!nd funciile discutate n curs "modificate corespunztor tipului c eilor# i salveaz arborele ntr$un fiier din catalogul curent al crui nume este dat ca parametru n linia de comand. Pe l!ng c eie, fiecare nod mai conine i o informaie de tip ntreg. Parcurgerea arborelui se va face S%&, iar scrierea n fiier se va face fr reveniri. 'n fiier va fi un arbore, nu o list de c ei. Pointerii vor fi valoarea offset$ului la care s$a scris informaia. 'n fiier se scriu numai informaiile asociate nodurilor, nu i c eile. (n al doilea program va trebui s refac n memorie arborele salvat n fiier, parcurg!nd arborele din fiier &S%. )rborele binar rezultat va avea c ei de tip ntreg, aceeai structur ca cel iniial, dar nu va mai fi arbore de cutare. *umele fiierului din catalogul curent este dat ca parametru n linia de comand. Pe ecran se vor tipri numai c eile.
Grupa 311CA - semigrupa b S se implementeze un program C care primete la intrare un fiier conin!nd un te+t cu cuvintele separate prin unul sau mai multe spaii, ,., ,,, ,-,. *umele fiierului se va da ca argument n linia de comand. Programul va construi un arbore binar de cutare cu c ei unice, n care c eile sunt cuvintele din te+t. .iecare nod mai conine o informaie care pstreaz frecvena apariiei cuv!ntului respectiv n te+t. %up parcurgerea te+tului i afiarea arborelui obinut, se va parcurge arborele S%&, se vor scoate r!nd pe r!nd toate nodurile din el i se va construi cu ele un arbore binar de cutare n care c eile sunt frecvenele apariiilor cuvintelor. Prin parcurgerea corespunztoare a acestui arbore, se vor afia cuvintele n ordinea descresctoare a frecvenei apariiei lor n te+t "se vor afia dublei /cuv!nt, numr apariii0#.
Grupa 312CA S se implementeze un program C care ofer printr$un meniu operaii de cutare i inserare n arbori )12. .iecare nod din arbore, pe l!ng c eia de tip ntreg va conine i o informaie "de tip ir de ma+im 34 caractere#, care va fi afiat n momentul gsirii c eii. Cutarea se va face utiliz!nd o funcie iterativ. 'n cazul operaiei de inserare se va preciza at!t c eia, c!t i informaia asociat. 5peraia de inserare trebuie s pstreze caracterul de arbore )12. %up fiecare inserare se va afia arborele "numai c eile#, pentru a verifica corectitudinea funciilor implementate. Pot fi utilizate sau adaptate funcii implementate pentru lucrul cu arbori binari de cutare.
Tema de cas 2
SDA
Grupa 313CA S se implementeze un program C care lucreaz cu arbori )12, n care e+ecut operaii de cutare i tergere a unor noduri, precizate prin c eia lor. .iecare nod din arbore, pe l!ng c eia de tip caracter, va conine i o informaie de tip ntreg, care va fi afiat n momentul gsirii c eii. Cutarea se va face utiliz!nd o funcie recursiv. 5peraia de tergere va trebui s tearg efectiv nodul din arbore i s pstreze proprietatea de arbore )12. %up fiecare tergere se va afia arborele, pentru a verifica corectitudinea funciilor implementate. 5peraiile asupra arborelui vor fi precizate prin comenzi de forma6 Cutarea elementului cu c eia + c+ sau C+ 7tergerea elementului cu c eia + d+ sau %+ )rborele iniial va fi construit cu funcia specific inserrii de noduri n arbore binar de cutare, adaptat pentru tipul corespunztor de nod. %atele vor fi introduse n urmtoarea ordine6 rdcina arborelui, urmat de descendenii direci ai rdcinii "nodurile de pe nivelul 8# descendeni precizai n ordinea de la st!nga la dreapta, urmai de descendenii lor "nodurile de pe nivelul 3# etc.
Grupa 314CA S se implementeze un program C care ofer printr$un meniu operaii de cutare i inserare n arbori 9 cu c ei de tip ntreg. 5peraia de inserare trebuie s pstreze caracterul de arbore 9. %up fiecare inserare se va afia arborele, pentru a verifica corectitudinea funciilor implementate. :oate informaiile de tip c eie dintr$un nod vor fi afiate ntre paranteze, iar toate nodurile de pe acelai nivel vor fi pe ecran pe acelai nivel "linie sau coloan la alegere6 deci se accept o afiare indentat, dar va fi mai bine apreciat una 3$%, cu nodurile de pe acelai nivel plasate pe aceeai linie a ecranului#.
Grupa 315CA S se implementeze primitivele de baz "adugare, tergere, cutare# pentru un arbore de cutare polimorfic "generic#. &elaia de ordonare pentru c eile arborelui va fi una definit de utilizator i transmis ca parametru funciilor menionate mai sus. 5peraia de eliminare va fi implementat obligatoriu prin metoda ;ibbard <inteligent=. "Suportul teoretic pentru aceast tem de cas este prezentat n continuarea acestui te+t#. .unciile vor fi e+ecutate prin comenzi dintr$un meniu.
Tema de cas 2
SDA
tergerea nai !
?liminarea unei frunze dintr$un arbore este o problem trivial i se rezum la tergerea efectiv a frunzei din arbore. Pentru un nod intern, abordarea cea mai simpl, dar i cea mai ineficient este urmtoarea6 .ie un nod n cu o c eie k ce se dorete a fi tears din arbore. ?liminarea poate fi reprezentat grafic n felul urmtor ".igura 8#6 n S%"n# r D r ?liminarea nodului n cu c eia k 84 A ?liminarea nodului cu c eia D @min C B B SS"A# SS"n# 8 3 SS"A# 84 C
@ SS"n#
8 A3
@min
S considerm e+emplul prezentat n .igura 3. Se constat c oric!t de ec ilibrat ar fi un arbore, la tergerea unui nod nlimea unui subarbore va crete, iar dup o serie de eliminri succesive el va degenera ntr$o list. %e remarcat c se poate aplica i metoda n oglid "simetric#, numit eliminarea naiv dreapta dintr$un arbore binar de cutare.
Eliminarea "ibbard
%efinim6
ma+ min
Tema de cas 2
SDA
Cu aceste notaii, reprezentarea grafic a eliminrii ;ibbard st!nga a nodului n ce conine c eia k este prezentat n .igura D.
SS"n# r A SS"A#
n @ma+ S%"n# r
ma+
@E E
ma+ @ma+
@E SS"ma+#
SS"ma+#
#igura 3 ?liminarea ;ibbard st!nga dintr$un arbore binar de cutare
?ste evident c se poate aplica i metoda de eliminarea n oglind "simetric#, connst!nd n aducerea nodului cu c eie minim din subarborele drept al nodului n cu c eia k de eliminat. 5 abordare eficient a problemei presupune determinarea nlimilor ma+"SS"n## i min "S%"n## definite anterior i aplicarea metodei stnga respectiv dreapta n funcie de ma+imum dintre nlimile celor doi subarbori "st!ng i drept#. 1om numi metoda ;ibbard <inteligent= aceast abordare a eliminrii unui nod. &elu!nd e+emplul anterior se constat c ma+/ min ceea ce duce la aplicarea eliminrii Hibbard dreapta i la scderea nlimii totale a arborelui "vezi .igura B#. 5 urmare evident a faptului c nalimea arborelui scade este aceea c viitoarele cutri n arbore se vor face mai rapid.
B 84 C
#igura 4 ?liminarea nodului cu c eia D duce la scderea nlimii arborelui i deci la o optimizare a cutrilor viitoare
Tema de cas 2
SDA