Strukture podataka i algoritmi |
4.3 Stabla |
Sada imamo rekurzivno definisanu strukturu podataka. (Listu je takodje moguce definisati rekurzivno: znate li kako?)
Cvorovi na najnizim nivoima stabla (oni koji nemaju podstabla) zovu se listovi.
U uredjenom binarnom stablu,
Metod AddToCollection je naravno rekurzivan. [Ucitaj metod AddToCollection.]
Slicno, metod FindInCollection je takodje rekurzivan. [Ucitaj metod FindInCollection.]
![]() |
Ovako se formira kompletno stablo, cija se visina definise kao broj veza (grana) od korena do najdubljeg cvora. |
Najpre, treba da izracunamo koliko cvorova n, se nalazi u takvom stablu visine h.
Imamo da je
n = 1 + 21 + 22 + .... + 2hodakle je
n = 2h+1 - 1i
h = floor( log2n )
Ispitivanje metoda FindInTree pokazuje da je u najgorem slucaju potrebno h+1 ili ceiling( log2n ) poredjena da bi se pronasao objekat. Ovo je isto kao kod binarnog pretrazivanja.
Medjutim, AddToTree takodje zahteva ceiling( log2n ) poredjenja da bi se odredilo gde treba dodati objekat. Kako ostatak obrade prilikom dodavanja objekata predstavlja konstantan broj operacija, kazemo binarno stablo zahteva O(logn) operacija i za dodavanje i za pretrazivanje objekata - sto je znacajno unapredjenje u odnosu na binarno pretrazivanje kada se radi o dinamickim strukturama koje zahtevaju cesto dodavanje novih objekata.
Brisanje je takodje O(logn) operacija.
Sta ce se desiti? Razmislite pre nego sto kliknete ovde!
Ovaj problem se lako prevazilazi koriscenjem strukture poznate kao gomila (heap). No, pre nego sto se pozabavimo gomilama, formalizovacemo nase ideje o kompleksnosti algoritama pazljivo definisuci sta znaci O(f(n)).
Kljucni pojmovi |
Dalje na Kompleksnost Nazad na Sadrzaj |