1/22
Pregled predavanja
Stabla
definicija i terminologija
dodavanje vora
2/22
Stabla
Stablo: usmjerena aciklina struktura povezanih vorova. usmjerena: Ima vezu samo u jednom smjeru
aciklina: ako krenemo od jednog vora, nema puteva koji vode do tog istog vora odakle smo krenuli. Osim toga, do svakog vora se moe doi samo na jedan nain, jednim putem. porodino stablo organizaciona struktura firme i sl. umjetna inteligencija: stablo odluka kompajleri: stablo parsiranja...
Primjeri stabala:
3/22
Stabla - primjeri
4/22
Terminologija
vor (node): objekat koji sadri podatak (element) i veze do svoje djece
korijen (root): vor na vrhu stabla. Nema roditelja. list (leaf): vor koji nema djece. grana (branch):
svaki unutranji vor koji nije niti korijen niti list. vor koji ima vezu do trenutnog vora. Svaki vor, osim korijena, ima tano jednog roditelja. vor na koji trenutni vor ima vezu vor koji ima zajednikog roditelja sa trenutnim vorom
roditelj (parent):
dijete (child):
brat (sibling):
5/22
Terminologija
korijen (root)
1 2 4 5 6 3 7
vor
Fakultet elektrotehnike Univerziteta u Tuzli
veza
6/22
Terminologija
podstablo (subtree): stablo sa vorovima do kojih se dolazi preko jedne veze od trenutnog vora. Svaki vor se moe smatrati korijenom podstabla kome pripadaju njegova djeca, unuci itd.
visina (height): duina najdueg puta od trenutnog vora do najudaljenijeg lista nivo ili dubina (level): put od korijena do nivo 1 datog vora
nivo 2
korijen
visina = 3
1 2 4 5 6 3 7
7/22
nivo 3
Fakultet elektrotehnike Univerziteta u Tuzli
8/22
9/22
Binarna stabla
Dubina je prosjenog binarnog stabla je mnogo manja od N, mada u najgorem sluaju moe iznositi N-1
10/22
11/22
Binarna stabla se uglavnom implementiraju pomou povezanih vorova. Takav vor ima element u koji se smjeta podatak i dvije veze (pokazivai) na dvoje svoje djece (lijevo, desno).
lijevo element podaci desno
12/22
left
data right 42
left
data right 59
left
13/22
Kod ovog stabla su vrijednosti elemenata unutar vorova poredani tako da se operacije ubacivanja, uklanjanja i pretraivanja mogu izvoditi efikasno. Klju: dio elementa koji je kriterij pretraivanja Za svaki vor X, svi kljuevi u lijevom podstablu su manji od vrijednosti kljua vora X, a svi kljuevi u desnom podstablu su vei od kljua u X.
14/22
BINARNO STABLO
15/22
16/22
Traenje vora sa datom vrijednou elementa Prolazak kroz stablo (npr. ispis svih elemenata) Ubacivanje novog elementa (vora) Uklanjanje postojeeg elementa (vora)
17/22
Traimo 9: 1. Poredimo 9:15 (korijen) => idi u lijevo podstablo 2. Poredimo 9:6 => idi u desno podstablo 3. Poredimo 9:7 => idi u desno podstablo 4. Poredimo 9:13 => idi u lijevo podstablo 5. Poredimo 9:9 => PRONAENO!
Sloenost: O(visinastabla)
Fakultet elektrotehnike Univerziteta u Tuzli
18/22
Prolazak kroz sve elemente stabla. Ovaj proces se koristi u mnogim algoritmima sa stablima. Najei naini prolaska kroz stablo (prema redoslijedu procesiranja podatka u voru): pre-order: procesira se vor pa onda lijevo pa desno podstablo tog vora in-order: procesira se lijevo podstablo pa onda vor pa desno podstablo post-order:
12 5 2 9 15 18 19
18 15 19
15 18 18
19 19 12
20/22
korijen
Nacrtati putanju oko stabla. Kad proete pored vora sa prave strane, procesirati ga.
12 5 2 9 15 18 19
18 15 19
15 18 18
19 19 12
21/22
Ubacivanje vora
Proi kroz stablo kao kod pretraivanja Ako je naen X ne raditi nita (ili treba izvriti neko auriranje, zavisno od dizajna) Ako X nije naen, ubaciti X na zadnjem voru pretrage.
Primjer ubacivanja broja 13
Sloenost: O(visinastabla)
Fakultet elektrotehnike Univerziteta u Tuzli
22/22