Documente Academic
Documente Profesional
Documente Cultură
3.1.
Liste
Pentru a mbunti utilizarea memoriei sunt folosite structuri de date nlnuite. Acestea poart numele de liste, fiind compuse dintr-o mulime de noduri ntre care sunt definite anumite legturi. Se ntlnesc liste simplu nlnuite, liste dublu nlnuite, liste circulare, structuri de liste i liste speciale care sunt formate din atomi i din alte liste. n continuare se prezint listele simplu nlnuite i dublu nlnuite.
Inserarea unui nou nod n interiorul unei liste dublu nlnuite se execut prin introducerea informaiei ataate i refacerea a patru legturi, astfel:
22
Fie o list dublu nlnuit, avnd referinele la capete P, respectiv Q. S se parcurg lista de la stnga la dreapta i de la dreapta la
23
3.2.
Arbori
1 + 2 + ... + 2n 1 = 2n 1 noduri.
Definiie. Un arbore binar se numete arbore binar complet dac pe primele n 1 niveluri are toate nodurile posibile, iar pe ultimul nivel n are o parte din noduri, considerate pe orizontal n ordinea de la stnga la dreapta. Modaliti statice de memorare 1. Putem memora un arbore binar prin memorarea etichetei nodului rdcin i folosind doi vectori ST i DR ce memoreaz etichetele descendenilor direci stng respectiv drept. Dac nu exist descendent direct, pe poziia respectiva se va memora valoarea 0. 2. Dac arborele este arbore binar complet, sau apropiat de un arbore binar complet putem folosi eficient un singur vector, n care legturile stnga i dreapta sunt implicite.
Inordine Parcurgerea n inordine viziteaz, pentru fiecare subarbore, mai nti subarborele stng, apoi rdcina, apoi subarborele drept. Dac arborele binar respectiv este i arbore de cutare, atunci parcurgerea n inordine viziteaz
25
Postordine Parcurgerea n postordine viziteaz, pentru fiecare subarbore, mai nti subarborele su stng, apoi subarborele su drept, apoi vrful rdcin. Parcurgerea n postordine se poate realiza recursiv astfel:
algoritm postordine(A:arbore); { if (A<>NIL) then { postordine(A->ST); postordine(A->DR); write(A->INF); } }
Toi algoritmii recursivi prezentai au i variante iterative, eliminarea recursivitii realizndu-se prin folosirea explicit a unor stive. Prezentm n continuare algoritmul iterativ de parcurgere n preordine:
algoritm RSD_iterativ { stiva<-vida; I :=RAD; OK:=true; while OK=true do { while (I<>NIL) do { write( I ); stiva<-I; I:=ST[I); } if (stiva<>vida) then { I<-stiva; I:=DR[I); } else OK:=false; } }
Parcurgerea pe nivele Dndu-se un arbore binar, s se viziteze vrfurile acestuia n ordinea cresctoare a nivelelor. Acest lucru se realizeaz folosind o coad auxiliar de noduri vizitate dar neprelucrate. Algoritmul se ncheie cnd coada devine vid, i este o particularizare a parcurgerii n lime a unui graf.
26
27
28