Strukture podataka i algoritmi 11 BINARNA STABLA PRETRAGE
Strukture podataka i algoritmi 11. BINARNA STABLA PRETRAGE I BINARNI HIPOVI
Binarna stabla pretrage i binarni hipovi • Binarna stabla pretrage • BSP operacije • Efikasnost BSP operacija • Binarni hipovi • Operacije nad binarnim hipom • Predstavljanje hipa pomoću niza • Primjene stabala Strukture podataka i algoritmi
Binarna stabla pretrage □ □ BSP = binarno stablo + BSP svojstvo: za svaki čvor �� �� Porede se ključevi < �� > �� Strukture podataka i algoritmi
Binarna stabla pretrage □ Primjer: 3 7 8 5 3 5 6 8 9 7 6 Strukture podataka i algoritmi 9
BSP operacije • • • Traženje čvora u stablu Dodavanje novog čvora u stablo Uklanjanje datog čvora iz stabla Strukture podataka i algoritmi
BSP operacije – traženje čvora u stablu □ Traženje čvora: za dato BSP �� i dati ključ �� , odrediti da li se čvor sa ključem �� nalazi u �� Strukture podataka i algoritmi
BSP operacije – traženje čvora u stablu Traženje čvora: za dato BSP �� i dati ključ �� , odrediti da li se čvor sa ključem �� nalazi u �� □ Poredi se �� sa korijenom �� : 1. slučaj: �� = T → završena pretraga □ 2. slučaj: �� < T → �� se nalazi u lijevom podstablu T 3. slučaj: �� > T → �� se nalazi u desnom podstablu T Strukture podataka i algoritmi
BSP operacije – traženje čvora u stablu □ □ Traženje čvora: za dato BSP �� i dati ključ �� , odrediti da li se čvor sa ključem �� nalazi u �� Primjer: traženje čvora 13 u datom BSP-u �� �� 17 21 5 4 18 11 9 2 7 15 13 16 Strukture podataka i algoritmi 23
BSP operacije – traženje čvora u stablu □ Primjer: traženje čvora 13 u datom BSP-u �� 17 5 4 2 21 11 9 7 18 15 13 16 Strukture podataka i algoritmi 23
BSP operacije – traženje čvora u stablu □ Primjer: traženje čvora 20 u datom BSP-u �� 17 5 4 2 21 11 9 7 18 15 13 16 Strukture podataka i algoritmi 23
BSP operacije – traženje čvora u stablu □ Algoritam za traženje čvora u BSP-u // Ulaz: čvor �� binarnog stabla pretrage, ključ �� // Izlaz: pokazivač na čvor sa ključem �� , ili null algorithm bst-search(t, x) if ((t == null) || (t. ključ == x)) then return t; else if (t. ključ > x) then bst-search(t. levo, x); else bst-search(t. desno, x); Strukture podataka i algoritmi
BSP operacije – traženje čvora u stablu □ Algoritam za traženje čvora u BSP-u // Ulaz: čvor �� binarnog stabla pretrage, ključ �� // Izlaz: pokazivač na čvor sa ključem �� , ili null algorithm bst-search(t, x) if ((t == null) || (t. ključ == x)) then return t; else if (t. ključ > x) then bst-search(t. levo, x); else bst-search(t. desno, x); □ Vrijeme izvršavanja: �� (ℎ), ℎ – visina stabla Strukture podataka i algoritmi
BSP operacije – dodavanje čvora u stablo □ Dodavanje čvora: dodati čvor �� u dato BSP �� Strukture podataka i algoritmi
BSP operacije – dodavanje čvora u stablo □ □ Dodavanje čvora: dodati čvor �� u dato BSP �� Tražimo �� u stablu �� : 1. slučaj: ako ga pronađemo ne dodajemo duplikat u stablo 2. slučaj: ako ga ne pronađemo ubacujemo ga na odgovarajuće mjesto u stablu
BSP operacije – dodavanje čvora u stablo □ □ Dodavanje čvora: dodati čvor �� u dato BSP �� Primjer: dodavanje čvora 25 u datom BSP-u �� 17 5 4 23 11 19 22 21 27
BSP operacije – dodavanje čvora u stablo □ □ Dodavanje čvora: dodati čvor �� u dato BSP �� Primjer: dodavanje čvora 25 u datom BSP-u �� 17 5 4 23 11 19 22 21 27
BSP operacije – dodavanje čvora u stablo □ □ Dodavanje čvora: dodati čvor �� u dato BSP �� Primjer: dodavanje čvora 25 u datom BSP-u �� 17 5 4 23 11 19 21 22 25 Strukture podataka i algoritmi 27
BSP operacije – dodavanje čvora u stablo □ Algoritam za dodavanje čvora // Ulaz: čvor �� binarnog stabla pretrage, novi čvor �� // Izlaz: čvor �� dodat u podstablo sa korenom �� algorithm bst-insert(t, p) if (t == null) then t = p; else if (p. ključ < t. ključ) then t. lijevo = bst-insert(t. lijevo, p); else if (p. ključ > t. ključ) then t. desno = bst-insert(t. desno, p); else ; // duplikati se ne dodaju return t; Strukture podataka i algoritmi
BSP operacije – dodavanje čvora u stablo □ Algoritam za dodavanje čvora // Ulaz: čvor �� binarnog stabla pretrage, novi čvor �� // Izlaz: čvor �� dodat u podstablo sa korenom �� algorithm bst-insert(t, p) if (t == null) then t = p; else if (p. ključ < t. ključ) then t. lijevo = bst-insert(t. lijevo, p); else if (p. ključ > t. ključ) then t. desno = bst-insert(t. desno, p); else ; // duplikati se ne dodaju return t; □ Vrijeme izvršavanja: �� (ℎ), ℎ – visina stabla Strukture podataka i algoritmi
BSP operacije – uklanjanje čvora iz stabla □ Uklanjanje čvora: ukloniti dati čvor �� iz datog BSP-a �� Strukture podataka i algoritmi
BSP operacije – uklanjanje čvora iz stabla □ □ Uklanjanje čvora: ukloniti dati čvor �� iz datog BSP-a �� Čvor �� koji se uklanja iz �� može biti: 1. Spoljašnji čvor (list) u �� 2. Unutrašnji čvor u �� sa jednim djetetom 3. Unutrašnji čvor u �� sa dvoje djece Strukture podataka i algoritmi
BSP operacije – uklanjanje čvora iz stabla □ Uklanjanje spoljašnjeg čvora (lista) Strukture podataka i algoritmi
BSP operacije – uklanjanje čvora iz stabla □ □ Uklanjanje spoljašnjeg čvora (lista) Primjer: uklanjanje lista 10 17 23 5 4 11 10 27 21 19 20 22 25
BSP operacije – uklanjanje čvora iz stabla □ □ Uklanjanje spoljašnjeg čvora (lista) Primjer: uklanjanje lista 10 17 23 5 4 11 10 27 21 19 20 22 25
BSP operacije – uklanjanje čvora iz stabla □ □ Uklanjanje spoljašnjeg čvora (lista) Primjer: uklanjanje lista 10 17 17 23 5 4 11 10 27 21 19 22 23 5 4 25 20 Strukture podataka i algoritmi 11 27 21 19 20 22 25
BSP operacije – uklanjanje čvora iz stabla □ Uklanjanje unutrašnjeg čvora sa jednim djetetom Strukture podataka i algoritmi
BSP operacije – uklanjanje čvora iz stabla □ □ Uklanjanje unutrašnjeg čvora sa jednim djetetom Primjer: uklanjanje unutrašnjeg čvora 19 17 23 5 4 11 10 27 21 19 20 22 25
BSP operacije – uklanjanje čvora iz stabla □ □ Uklanjanje unutrašnjeg čvora sa jednim djetetom Primjer: uklanjanje unutrašnjeg čvora 19 17 23 5 4 11 10 27 21 19 20 22 25
BSP operacije – uklanjanje čvora iz stabla □ □ Uklanjanje unutrašnjeg čvora sa jednim djetetom Primjer: uklanjanje unutrašnjeg čvora 19 17 17 23 5 4 11 10 21 19 23 5 27 4 22 25 5 11 27 21 20 22 25 20 Strukture podataka i algoritmi 11/15
BSP operacije – uklanjanje čvora iz stabla □ Uklanjanje unutrašnjeg čvora sa dvoje djece Strukture podataka i algoritmi
BSP operacije – uklanjanje čvora iz stabla □ □ □ Uklanjanje unutrašnjeg čvora p sa dvoje djece 1. način: • prvo se pronađe najmanji čvor q u desnom podstablu čvora p • čvor p se zamjenjuje sa čvorom q i uklanja se čvor q iz desnog podstabla 2. način: • prvo se pronađe najveći čvor q u lijevom podstablu čvora p • čvor p se zamjenjuje sa čvorom q i uklanja se čvor q iz lijevog podstabla
BSP operacije – uklanjanje čvora iz stabla □ □ Uklanjanje unutrašnjeg čvora sa dvoje djece Primjer: uklanjanje unutrašnjeg čvora 17 17 23 5 4 11 10 27 21 19 20 22 25
BSP operacije – uklanjanje čvora iz stabla □ □ Uklanjanje unutrašnjeg čvora sa dvoje djece Primjer: uklanjanje unutrašnjeg čvora 17 (1. način) 19 17 23 5 4 11 10 27 21 19 22 23 5 4 25 20 Strukture podataka i algoritmi 11 10 27 21 20 22 25
BSP operacije – uklanjanje čvora iz stabla □ □ Uklanjanje unutrašnjeg čvora sa dvoje djece Primjer: uklanjanje unutrašnjeg čvora 17 (2. način) 11 17 23 5 4 11 10 27 21 19 22 23 5 4 25 20 10 19 22 20 Strukture podataka i algoritmi 27 21 25
BSP operacije – uklanjanje čvora iz stabla □ Opšti slučaj uklanjanja unutrašnjeg čvora �� sa dvoje djece �� < �� �� > �� �� < �� > �� Strukture podataka i algoritmi �� > ��
Uklanjanje najmanjeg čvora iz binarnog stabla pretrage □ Algoritam za uklanjanje najmanjeg čvora // Ulaz: čvor �� binarnog stabla pretrage // Izlaz: uklonjen najmanji čvor �� iz podstabla sa korenom �� algorithm bst-deletemin(t) if (t. lijevo == null) then p = t; return t. desno; else t. lijevo = bst-deletemin(t. lijevo); return t; Strukture podataka i algoritmi
Nalaženje najmanjeg čvora u binarnom stablu pretrage Strukture podataka i algoritmi
Uklanjanje čvora iz binarnog stabla pretrage // Ulaz: čvor �� binarnog stabla pretrage, ključ x // Izlaz: uklonjen čvor sa ključem x iz stabla sa korenom �� algorithm bst-delete(t, x) if (t != null) then // neprazno stablo, naći ključ x if (t. ključ > x) then t. lijevo = bst-delete(t. lijevo, x); else if (t. ključ < x) then t. desno = bst-delete(t. desno, x); else t. ključ = x, ukloniti čvor x Vrijeme izvršavanja: //�� (ℎ), ℎ – visina stabla p = t; if (t. lijevo == null) then return t. desno; else if (t. desno == null) then return t. lijevo; else // čvor sa dva djeteta t. desno = bst-deletemin(t. desno); t. ključ = p. ključ; return t; Strukture podataka i algoritmi
Efikasnost BSP operacija □ Vrijeme izvršavanja za traženje, dodavanje, uklanjanje čvora: �� (ℎ) Strukture podataka i algoritmi
Efikasnost BSP operacija □ □ Vrijeme izvršavanja za traženje, dodavanje, uklanjanje čvora: �� (ℎ) Najgori slučaj: ℎ = �� (�� ) Strukture podataka i algoritmi
Efikasnost BSP operacija □ Najbolji slučaj: ℎ = �� (log �� ) Puno binarno stablo □ U praksi je vjerovatniji ovaj slučaj. □ Strukture podataka i algoritmi
Binarni hipovi • • Kompletno binarno stablo je stablo koje ima čvorove na svim nivoima osim možda poslednjem. Na poslednjem nivou, na kojem neki čvorovi mogu nedostajati, svi postojeći čvorovi moraju biti lijevo od onih koji nedostaju. Binarni hip je kompletno binarno stablo u kojem je ključ svakog čvora manji od ključeva djece tog čvora. Hip svojstvo (ako su u i w djeca čvora v): - v. ključ < u. ključ - v. ključ < w. ključ Strukture podataka i algoritmi
Kompletno binarno stablo – binarni hip • • Min-hip: na svakom putu od nekog čvora nadole niz stablo čvorovi su sortirani u rastućem redoslijedu. Max-hipovi Strukture podataka i algoritmi
Operacije nad binarnim hipom • • • Uklanjanje najmanjeg čvora iz hipa Dodavanje novog čvora u hip Stvaranje hipa od kompletnog binarnog stabla čiji se čvorovi nalaze u proizvoljnom poretku Strukture podataka i algoritmi
Uklanjanje najmanjeg čvora iz hipa • • Najmanji čvor u hipu mora biti korijen stabla. Ne smije se prosto ukloniti korijen stabla jer se gubi strukture stabla. Mora se naći novi ključ za korijen tako da stablo i dalje bude skoro puno ali i da hip svojstvo ne bude narušeno. Uklanjanje najmanjeg čvora se odvija u 2 faze. Strukture podataka i algoritmi
2 faze uklanjanja najmanjeg čvora iz hipa • • • 1. faza – uzima se ključ sasvim desnog lista na poslednjem nivou, uklanja se taj list a ključ korijena se privremeno mijenja sa uzetim ključem sasvim desnog lista. 2. faza – ključ novog korijena se „gura“ nadole niz stablo do njegovog pravog mjesta (sve dok se može zamijeniti sa ključem jednog od djeteta aktuelnog čvora koje ima manji ključ). Niz stablo idemo prema djetetu sa manjim ključem. Strukture podataka i algoritmi
2 faze uklanjanja najmanjeg čvora iz hipa Vrijeme izvršavanja: �� (log n) Strukture podataka i algoritmi
Dodavanje novog čvora u hip • • • Dodavanje novog čvora se odvija u 2 faze. 1. faza – dodati novi čvor na poslednjem nivou na lijevoj strani stabla. 2. faza – novi čvor se „gura“ naviše sve dok ne dođe ili do korijena ili do čvora čiji roditelj ima manji ključ. Strukture podataka i algoritmi
Dodavanje novog čvora u hip Vrijeme izvršavanja: �� (log n) Strukture podataka i algoritmi
Konstruisanje hipa • • • Neka je dato kompletno binarno stablo čiji su čvorovi proizvoljno razmješteni tako da njihovi ključevi ne zadovoljavaju hip svojstvo. Polazi se od praznog hipa i redom mu se dodaju čvorovi datog kompletnog binarnog stabla jedan po jedan. Čvorovi datog stabla se uzimaju tokom obilaska tog stabla na jedan od 3 standardna načina – preorder, inorder ili postorder. Strukture podataka i algoritmi
Predstavljanje hipa pomoću niza • • Binarni hip se predstavlja cjelobrojnim nizom. Elementi niza predstavljaju čvorove stabla binarnog hipa nivo po nivo, počinjući od korijena i idući s lijeva na desno unutar jednog nivoa. Neka je dat čvor a[i] – njegovo lijevo dijete je a[2*i] a njegovo desno dijete je a[2*i+1]. Hip se predstavlja u obliku niza pokazivača na objekte-čvorove. Strukture podataka i algoritmi
Predstavljanje hipa pomoću niza Strukture podataka i algoritmi
Isplivavanje čvora u hipu - algoritam • Dodavanje čvora u hip – čvor „isplivava“ na svoje pravo mjesto u hipu // Ulaz: indeks čvora ai u hipu predstavljen nizom a // Izlaz: čvor ai pomjeren naviše do svog pravog mjesta u hipu algorithm heap-bubbleup(a, i) j = i / 2; // aj je roditelj čvora ai if (j > 0) && (a[i] < a[j])) then swap (a[i], a[j]); heap-bubbleup(a, j); return; Strukture podataka i algoritmi
Dodavanje čvora u hip - algoritam // Ulaz: hip predstavljen nizom a, čvor x // Izlaz: hip proširen za čvor x algorithm heap-insert(a, x) n = n + 1; a[n] = x; heap-bubbleup (a, n); return; Strukture podataka i algoritmi
Prosijavanje čvora u hipu - algoritam • Uklanjanje najmanjeg čvora iz hipa – privremeni čvor se „prosijava“ kroz stablo do svog pravog mjesta // Ulaz: indeks čvora ai u hipu predstavljen nizom a // Izlaz: čvor ai pomjeren nadole do svog pravog mjesta u hipu algorithm heap-siftdown(a, i) j = 2 * i; // aj je lijevo dijete čvora ai if ((j < n) && (a[j+1] < a[j])) then j = j + 1; // aj je manje dijete čvora ai if ((j <= n) && (a[i] > a[j])) then swap (a[i], a[j]); heap-siftdown(a, j); return; Strukture podataka i algoritmi
Uklanjanje čvora iz hipa - algoritam // Ulaz: hip predstavljen nizom a // Izlaz: hip bez uklonjenog korijena i ključ uklonjenog korijena algorithm heap-deletemin(a) x = a[1]; a[1] = a[n]; n = n - 1; heap-siftdown(a, 1); return x; Strukture podataka i algoritmi
Konstruisanje hipa od niza sa neuređenim elementima • • Postupno se konstruišu sve veći hipovi počinjući od čvorova na poslednjem nivou. Zatim se konstruišu hipovi od podstabala čiji su korijeni oni čvorovi koji se nalaze na pretposlednjem nivou – potrebno je samo prosijati korijene tih stabala. Konstruisati hipove od podstabala čiji su korijeni oni čvorovi na prvom nivou iznad prethodnog – prosijati samo korijene ovih podstabala. Nastaviti ovaj postupak nivo po nivo. Strukture podataka i algoritmi
Konstruisanje hipa od niza sa neuređenim elementima Strukture podataka i algoritmi
Konstruisanje hipa od niza sa neuređenim elementima - algoritam // Ulaz: niz a od n neuređenih elemenata // Izlaz: preuređen niz a tako da predstavlja binarni hip algorithm heap-make(a) for i = n/2 downto 1 do heap-siftdown(a, i); return; Strukture podataka i algoritmi
Primjene stabala • • Redovi sa prioritetima Disjunktni skupovi Strukture podataka i algoritmi
Redovi sa prioritetima • • Red za čekanje sa prioritetima elemenata predstavlja strukturu podataka u kojoj je svakom elementu pridružena određena numerička vrijednost (njegov prioritet ili ključ). Primjer: operativni sistem sa dijeljenjem vremena koji raspoređuje različite procese u sistemu radi izvršavanja od strane procesora. Strukture podataka i algoritmi
Osnovne operacije nad redom sa prioritetima • • Dodavanje elemenata u red - operacija pq-insert(q, x): u red sa prioritetima q se dodaje novi elemenat x. Uklanjanje elemenata iz reda (uklanja se elemenat koji ima najmanji prioritet) – operacija pq-deletemin(q): prvo se pronalazi element najnižeg prioriteta a zatim se taj elemenat uklanja iz reda. Strukture podataka i algoritmi
Dodatne operacije nad redom sa prioritetima • • • pq-make(q, a): formiranje reda sa prioritetima q od datih elemenata u nizu a. pq-changekey(q, x, v): promjena prioriteta datog elementa x u redu sa prioritetima q tako da ima novu vrijednost v. pq-delete(q, x): uklanjanje datog proizvoljnog elementa x iz reda sa prioritetima q. Strukture podataka i algoritmi
Operacije nad redom sa prioritetima Red sa prioritetima se predstavlja binarnim hipom u obliku niza. • • • pq-insert(q, x) → heap-insert pq-deletemin(q) → heap-deletemin pq-make(q, a) → heap-make pq-changekey(q, x, v) → heap-siftdown ili heapbubbleup pq-delete(q, x) → heap-deletemin Strukture podataka i algoritmi
Disjunktni skupovi • • Disjunktni skupovi – skupovi koji nemaju zajedničkih elemenata. Disjunktni skupovi se predstavljaju pomoću kolekcije korijenskih stabala. Strukture podataka i algoritmi
Operacije za rad sa disjunktnim skupovima • • • ds-make(x): konstruisanje skupa od jednog elementa x ds-find(x): određivanje matičnog skupa u kolekciji koji sadrži dati element x. ds-union(x, y): objedinjavanje dva disjunktna skupa predstavljena pomoću dva stabla sa korijenima x i y tako što se korijen stabla manje visine veže za korijen stabla veće visine. Strukture podataka i algoritmi
Konstruisanje disjunktnog skupa od jednog elementa - algoritam // Ulaz: objekat x sa odgovarajućim elementom skupa // Izlaz: čvor x stabla u kolekciji stabala algorithm ds-make(x) x. h = 0; x. p = null; return x; h – cjelobrojno polje za visinu čvora p – polje u kome se nalazi pokazivač na roditelja čvora x Strukture podataka i algoritmi
Nalaženje predstavnika elementa u disjunktnom skupu - algoritam // Ulaz: čvor x stabla u kolekciji stabala // Izlaz: predstavnik skupa koji sadrži element x algorithm ds-find(x) while (x. p != null) do x = x. p; return x; Strukture podataka i algoritmi
Odgovoriti na pitanja u vezi sa stablom: 1. Koji čvorovi su listovi? • D, M, N, F, J, K, L Strukture podataka i algoritmi
Odgovoriti na pitanja u vezi sa stablom: 2. Koji čvor je korijen? • A Strukture podataka i algoritmi
Odgovoriti na pitanja u vezi sa stablom: 3. Koji čvor je roditelj čvora C? • A Strukture podataka i algoritmi
Odgovoriti na pitanja u vezi sa stablom: 4. Koji čvor su djeca čvora C? • F, G, H Strukture podataka i algoritmi
Odgovoriti na pitanja u vezi sa stablom: 5. Koji čvorovi su preci čvora E? • B, A Strukture podataka i algoritmi
Odgovoriti na pitanja u vezi sa stablom: 6. Koji čvorovi su potomci čvora E? • I, M, N Strukture podataka i algoritmi
Odgovoriti na pitanja u vezi sa stablom: 7. Koji je dubina čvora I? • 3 Strukture podataka i algoritmi
Odgovoriti na pitanja u vezi sa stablom: 8. Koji je visina stabla? • 4 Strukture podataka i algoritmi
Nacrtati reprezentaciju sledećeg izraza u obliku stabla: ((a + b) + c * (d + e) + f) * (g + h) Strukture podataka i algoritmi
Nacrtati reprezentaciju sledećeg izraza u obliku stabla: ((a + b) + c * (d + e) + f) * (g + h) * + + a + f * b c + d e Strukture podataka i algoritmi g h
Konstrukcija binarnog stabla pretrage – primjer 1 Za sekvencu ključeva odrediti binarno stablo pretrage koje se dobije kada se ti ključevi dodaju početno praznom stablu, redom jedan po jedan u datom redoslijedu: 1, 2, 3, 4, 5, 6, 7 Strukture podataka i algoritmi
Konstrukcija binarnog stabla pretrage – primjer 2 Za sekvencu ključeva odrediti binarno stablo pretrage koje se dobije kada se ti ključevi dodaju početno praznom stablu, redom jedan po jedan u datom redoslijedu: 4, 2, 1, 3, 6, 5, 7 Strukture podataka i algoritmi
Konstrukcija binarnog stabla pretrage – primjer 3 Za sekvencu ključeva odrediti binarno stablo pretrage koje se dobije kada se ti ključevi dodaju početno praznom stablu, redom jedan po jedan u datom redoslijedu: 1, 6, 7, 2, 4, 3, 5 Strukture podataka i algoritmi
Konstrukcija binarnog hipa – primjer 1 Za sekvencu ključeva odrediti binarni hip koji se dobije kada se ti ključevi dodaju početno praznom hipu, redom jedan po jedan u datom redoslijedu: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Strukture podataka i algoritmi
Konstrukcija binarnog hipa – primjer 2 Za sekvencu ključeva odrediti binarni hip koji se dobije kada se ti ključevi dodaju početno praznom hipu, redom jedan po jedan u datom redoslijedu: 3, 1, 4, 1, 5, 9, 2, 6, 5, 4 Strukture podataka i algoritmi
Konstrukcija binarnog hipa – primjer 3 Za sekvencu ključeva odrediti binarni hip koji se dobije kada se ti ključevi dodaju početno praznom hipu, redom jedan po jedan u datom redoslijedu: 2, 7, 1, 8, 2, 8 Strukture podataka i algoritmi
Zaključak • BSP = binarno stablo + BSP svojstvo • BSP operacije - traženje čvora u stablu, dodavanje novog čvora u stablo, uklanjanje datog čvora iz stabla. • Binarni hip je kompletno binarno stablo u kojem je ključ svakog čvora manji od ključeva djece tog čvora. • Kompletno binarno stablo je stablo koje ima čvorove na svim nivoima osim možda poslednjem. Strukture podataka i algoritmi
Zaključak 2 • Operacije nad binarnim hipom - uklanjanje najmanjeg čvora iz hipa, dodavanje novog čvora u hip, konstruisanje hipa od kompletnog binarnog stabla čiji se čvorovi nalaze u proizvoljnom poretku. • Binarni hip se predstavlja cjelobrojnim nizom pokazivača na objekte-čvorove. • Primjene stabala - redovi sa prioritetima, disjunktni skupovi. Strukture podataka i algoritmi
Hvala na pažnji! Strukture podataka i algoritmi
- Slides: 87