Anda di halaman 1dari 22

Algoritmi i strukture podataka

dr.sc. Edin Pjani

Fakultet elektrotehnike Univerziteta u Tuzli

1/22

Pregled predavanja

Stabla

definicija i terminologija

Binarna stabla Ureena binarna stabla Binary Search Tree (BST)

pretraga prolazak kroz stablo traversing

pre-order, in-order, post-order

dodavanje vora

Fakultet elektrotehnike Univerziteta u Tuzli

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:

Stabla imaju dobre performanse pri dodavanju, uklanjanju i pretraivanju elemenata.

Fakultet elektrotehnike Univerziteta u Tuzli

3/22

Stabla - primjeri

File system Raunanje izraza: a= (b+c)*d;


= a + b c * d

Fakultet elektrotehnike Univerziteta u Tuzli

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):

Fakultet elektrotehnike Univerziteta u Tuzli

5/22

Terminologija

vor (node): svi kruii na slici desno

korijen (root): 1 list (leaf): 4, 5, 6, 7 grana (branch): 2, 3 Posmatrajmo vor 2

korijen (root)

1 2 4 5 6 3 7

roditelj (parent): 1 dijete (child): 4, 5 brat (sibling): 3

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

Jo jedna definicija stabla (rekurzivna)


1.Stablo je kolekcija vorova 2.Stablo moe biti prazno 3.Ako nije prazno, stablo se sastoji od jednog vora (korijen, root) i nula ili vie podstabala na ije korijene su spojene veze od korijena trenutnog stabla.

Fakultet elektrotehnike Univerziteta u Tuzli

8/22

Stablo mogua implementacija

element veze do djece

element veze do djece

Fakultet elektrotehnike Univerziteta u Tuzli

9/22

Binarna stabla

Stablo kod kojeg vor moe imati najvie 2 djece

Dubina je prosjenog binarnog stabla je mnogo manja od N, mada u najgorem sluaju moe iznositi N-1

Fakultet elektrotehnike Univerziteta u Tuzli

10/22

Binarno stablo - implementacija

Binarno stablo je mogue implementirati pomou niza:

Fakultet elektrotehnike Univerziteta u Tuzli

11/22

Binarno stablo - implementacija

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

struct CvorStabla { ElemTip element; CvorStabla *lijevo; CvorStabla *desno; };


Fakultet elektrotehnike Univerziteta u Tuzli

12/22

Binarno stablo - primjer

Vie vorova se vee u stablo na sljedei nain.


korijen

left

data right 42

left

data right 59

left

data right 27 left data right 86

Fakultet elektrotehnike Univerziteta u Tuzli

13/22

Ureena binarna stabla (binary search trees - BST)

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.

Fakultet elektrotehnike Univerziteta u Tuzli

14/22

Ureena binarna stabla (binary search trees - BST)

BINARNO STABLO

NIJE BINARNO STABLO


jer je 7 > 6 a nalazi se u lijevom podstablu vora 6

Fakultet elektrotehnike Univerziteta u Tuzli

15/22

Ureena binarna stabla (binary search trees - BST)


Dva stabla koja sadre iste podatke

Prosjena dubina vora je O(logN) Najvea dubina vora je O(N)

Fakultet elektrotehnike Univerziteta u Tuzli

16/22

Operacije nad BST binarnim stablom


Traenje vora sa datom vrijednou elementa Prolazak kroz stablo (npr. ispis svih elemenata) Ubacivanje novog elementa (vora) Uklanjanje postojeeg elementa (vora)

Fakultet elektrotehnike Univerziteta u Tuzli

17/22

Pretraivanje u binarnom stablu


Primjer traenja vora sa vrijednou 9:

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!

Ovo je rekurzivan proces.

Sloenost: O(visinastabla)
Fakultet elektrotehnike Univerziteta u Tuzli

18/22

Prolazak kroz BST engl. traversal

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:

procesira se lijevo pa desno podstablo pa onda vor


19/22

Fakultet elektrotehnike Univerziteta u Tuzli

Prolazak kroz BST primjer


korijen

12 5 2 9 15 18 19

pre-order: 12 5 2 9 in-order: 2 5 9 12 post-order: 2 9 5 15

18 15 19

15 18 18

19 19 12
20/22

Fakultet elektrotehnike Univerziteta u Tuzli

Prolazak kroz BST "trik"

Brzo generisanje rezultata prolaska kroz stablo:


korijen

Nacrtati putanju oko stabla. Kad proete pored vora sa prave strane, procesirati ga.

12 5 2 9 15 18 19

pre-order: sa lijeve strane in-order: odozdo post-order: sa desne strane

pre-order: 12 5 2 9 in-order: 2 5 9 12 post-order: 2 9 5 15

18 15 19

15 18 18

19 19 12

Fakultet elektrotehnike Univerziteta u Tuzli

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

Anda mungkin juga menyukai