Documente Academic
Documente Profesional
Documente Cultură
alin.zamfiroiu@csie.ase.ro
Arbori binari
Arbori AVL
Tabele de dispersie
Heap
Structura tara si nod
Creare nod
Inserare
Parcurgere si afisare
Numarul de nivele
Afisare de pe un nivel
Cautare nod
Stergere
http://www.bluesharktutorials.com/
Pentru crearea unui nod se primesc cele trei
informatii necesare: informatia, nodul din
stanga si nodul din dreapta.
http://www.cs.cmu.edu/
Preordine RSD;
Inordine SRD;
Postordine SDR.
Pentru determinarea numarului de niveluri se
calculeaza numarul de niveluri pentru fiecare
subarbore si se determina maximul dintre
acestea, la care se adauga valoarea 1.
Se furnizeaza ca si parametrii: radacina
arborelui, nivelul de pe care dorim sa afisam
informatiile si nivelul aferent radacinii (nivel 1).
https://www.rtmath.net/
http://users.informatik.uni-halle.de/
http://pages.cs.wisc.edu/
http://www.ambesty.com/
http://4spills.blogspot.ro/ http://www.sparknotes.com/
Se creeaza o structura
pentru un vagon cu cod si
tipul vagonului.
Cozi de prioritate
Implementare algoritmi de selecție
Citirea datelor: 5, 12, 8, 6, 18, 7.
Le citim într-un vector normal:
0 1 2 3 4 5
5 12 8 6 18 7
2*N+1
2*N+2
12 8
6 18 87
0 1 2 3 4 5
5 12 8 6 18 7
Filtrarea se face incepand cu pozitia [(N-1)/2] și
terminând cu rădăcina: poziția 0;
In cazul nostru avem 6 noduri pozitia 2;
12 12
10 11
11 10
min-heap: valoarea dintr-un nod este mai
mică decât valorile din fii acestui nod.
12 11
Metoda de filtrare trebuie sa verifice daca
nodul primit ca parametru verifica conditiile
de MAX-heap.
În cazul în care condiția nu este verificată,
valorile sunt interschimbate.
5 5
12 8 12 87
6 18 87 6 18 8
În cazul unei interschimbări se apelează
metoda de filtrare după nodul care a fost
schimbat – doar dacă poziția acestuia este
mai mică decât [(N-1)/2].
Pozitia nodului de verificat este decrementată.
Se verifica daca exista un fiu cu valoarea mai
mare.
Daca exista se face interschimbarea.
5 5
18 87
12 87
6 18
6 12 8
8
Pozitia este iar decrementată.
Se repetă procesul.
5 87
18 87 18 5
6 12 8 6 12 8
Deoarece pozitia maximului a fost identificat
la pozitia 2, care respectă conditia ca este
mai mic sau egal cu [(N-1)/2](2<=2), se
reaia procesul pentru aceasta pozitie:
87 87
18 5 18 8
6 12 8 6 12 5
Ce presupune a filtra pentru min-HEAP ??
Trebuie să alocăm spațiu pentru un element
în plus, în vectorul în care gestionăm heap-ul
nostru.
0 1 2 3 4 5
87 18 8 6 12 5
18 8
6 12 5 17
Se apelează metoda de filtrare pentru poziția
[(N-1)/2]. Acum avem 7 elemente in vector.
Se apelează pentru pozitia 3.
87
18 8
6 12 5 17
Se continuă cu pozitia 2 unde trebuie
realizata o interschimbare.
87 87
18 8 18 17
6 12 5 17 6 12 5 8
Se continuă cu pozitia 1 și pozitia 0.
Arborele respectă condițiile de MAX-heap.
87 87
18 17 18 17
6 12 5 8 6 12 5 8
De obicei dintr-un heap se extrage rădăcina
acestuia deoarece se stie ca este maximul din
acel heap.
Cum vom face acest lucru pe vectorul pe care
lucram noi ?
87
18 17
6 12 5 8
Se salveaza primul element pentru returnare;
Se inverseaza primul element cu ultimul
element din cadrul vectorului.
0 1 2 3 4 5 6 0 1 2 3 4 5 6
87 18 17 6 12 5 8 8 18 17 6 12 5 87
87
Elem=87 8
18 17
18 17
6 12 5 8 6 12 5 87
Acum se pune problema ștergerii ultimului
element din vector.
Acest lucru se face prin alocarea de spațiu
pentru un vector cu un element mai puțin și
copierea primelor N-1 elemente.
Se reduce si dimensiunea vectorului.
Cum arată arborele?
0 1 2 3 4 5 6
8 18 17 6 12 5 87
0 1 2 3 4 5
8 18 17 6 12 5
Respectă regulile de MAX-HEAP ?
Acum N=6pozitie=2.
18 17
6 12 5
Pentru poziția 2 și poziția 1, arborele
respectă condițiile de MAX-heap.
8
8
18 17
18 17
6 12 5
6 12 5
Pentru poziția 0 este identificat un fiu cu
valoarea mai mare și se realizează
interschimbarea. Se reapelează metoda de
filtrare.
8
18
18 17
8 17
6 12 5
6 12 5
Si in această poziție este identificat un fiu cu
valoarea mai mare.
18 18
8 17 12 17
6 12 5 6 8 5
După această interschimbare heap-ul nostru
respectă condițiile de MAX-Heap.
18
12 17
6 8 5
Afișare: se parcurge vectorul și se afișează.