42
Poglavlje 3: Stabla Sastavio: Robert Manger 23.10.2020 Sveučilište u Zagrebu PMF – Matematički odsjek STRUKTURE PODATAKA I ALGORITMI Predavanja 2020/2021

Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Poglavlje 3:

Stabla

Sastavio: Robert Manger

23.10.2020

Sveučilište u Zagrebu

PMF – Matematički odsjek

STRUKTURE PODATAKA I

ALGORITMI

Predavanja 2020/2021

Page 2: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Sadržaj Poglavlja 3

3.1. (Uređeno) stablo

3.2. Binarno stablo

3.3. k-stablo

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

2

Page 3: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene stabla (1)

• U listi smo imali linearni uređaj podataka; stablo

se zasniva na hijerarhijskom uređaju.

• (Uređeno) stablo T je neprazni konačni skup

podataka istog tipa koje zovemo čvorovi. Pritom:

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

3

– postoji jedan istaknuti

čvor r koji se zove

korijen od T ;

– ostali čvorovi grade

konačni niz (T1, T2, ...,Tk)

od 0 ili više disjunktnih

(manjih) stabala.

Page 4: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene stabla (2)

• Ovo je bila rekurzivna definicija.

• T1, T2, . . .,Tk zovu se pod-stabla korijena r.

• Korijeni r1, r2, . . .,rk od T1, T2, . . .,Tk su djeca od

r, a r je njihov roditelj.

• Primjenom rekurzije za svaki čvor možemo

ustanoviti čije je on dijete te čiji je roditelj.

– Korijen nema roditelja

– Ostali imaju po jednog roditelja.

• Uređenost stabla se očituje u tome što među

pod-stablima postoji linearan uređaj.

• Uređeno stablo prikazujemo dijagramom.SPA-3 STRUKTURE PODATAKA I

ALGORITMI

4

Page 5: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene stabla (3)

• Primjeri uređenih stabala.

– Sadržaj knjige, struktura

države, porodično stablo,

organizacija Sveučilišta.

– Građa C programa:

• globalne varijable, funkcije

• lokalne varijable, naredbe.

– Građa aritmetičkog izraza

(a + b)*(a + c) :

• Čvorovi bez djece su operandi,

ostali su računske operacije.

• Uređenost je važna ako su

operacije nekomutativne.

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

5

Page 6: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene stabla (4)

• U zadnjem primjeru imamo označeno stablo:

– Svakom čvoru pridružen je dodatni podatak - oznaka.

– Razlikujemo čvor (njegovo ime) od oznake.

• Ime čvora (u kružiću) služi za identifikaciju - ne mogu

postojati dva čvora s istim imenom.

• Oznaka čvora (izvan kružića) služi za informaciju - dva čvora

mogu imati istu oznaku.

• Niz čvorova i1, i2, . . . , im takvih da je prethodni u

nizu roditelj idućeg zove se put od i1 do im .

– Duljina tog puta je m − 1.

– i1 je predak od im , a im je potomak od i1.

– Za svaki čvor ≠ korijena postoji jedinstveni put od

korijena do tog čvora.SPA-3 STRUKTURE PODATAKA I

ALGORITMI

6

Page 7: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene stabla (5)

• Razina (nivo) s je skup čvorova stabla sa

svojstvom da put od korijena do tog čvora ima

duljinu s.

– Razinu 0 čini sam korijen.

– Razinu 1 čine djeca korijena,

– Razinu 2 njihova djeca, itd.

• Visina stabla je maksimalna neprazna razina.

• List je čvor bez djece.

• Unutrašnji čvor je čvor koji nije list.

• Djeca istog čvora zovu se braća.

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

7

Page 8: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene stabla (6)

• Apstraktni tip podataka Tree

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

8

Page 9: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene stabla (7)

• Apstraktni tip podataka Tree (nastavak)

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

9

Page 10: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene stabla (8)

• Apstraktni tip podataka Tree (drugi nastavak)

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

10

Page 11: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Obilazak stabla (1)

• Obilazak je algoritam kojim “posjećujemo”

čvorove stabla, svaki čvor točno jednom.

• Najpoznatiji obilasci su: Preorder( ),

Inorder( ), Postorder( ).

• Neka je T stablo sastavljeno od korijena r i pod-

stabala T1, T2, . . . ,Tk . Tada:

– Preorder( ) . . . najprije posjećuje r, zatim obilazi

T1, zatim obilazi T2, . . . , na kraju obilazi Tk.

– Inorder( ) . . . najprije obilazi T1, zatim posjećuje r,

zatim obilazi T2 , . . . , na kraju obilazi Tk.

– Postorder( ) . . . najprije obilazi T1, zatim obilazi

T2, . . ., zatim obilazi Tk, na kraju posjećuje r.SPA-3 STRUKTURE PODATAKA I

ALGORITMI

11

Page 12: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Obilazak stabla (2)

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

12

• Čvorove stabla na slici algoritmi

obilaze u sljedećem redoslijedu:

– Preorder( ):

0,1,2,4,7,8,5,9,3,6

– Inorder( ):

1,0,7,4,8,2,9,5,6,3

– Postorder( ):

1,7,8,4,9,5,2,6,3,0

Page 13: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Obilazak stabla (3)

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

13

• Algoritmi obilaska mogu se

zapisati kao potprogrami

(neovisni o implementaciji).

• U potprogramu ispod

operacija posjećivanja čvora

pretvorena je u ispis oznake:

Page 14: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Implementacija stabla na osnovi

veze od čvora do roditelja (1)

• Svakom čvoru eksplicitno zapišemo roditelja.– Uzimamo da su imena čvorova cijeli brojevi 0, 1, 2, ...,

n − 1, gdje je n broj čvorova.

– Stablo prikazujemo poljima.

– i-te klijetke polja opisuju i-ti čvor i u njima piše oznaka

tog čvora odnosno kursor na roditelja.

– Kursor root pokazuje gdje se nalazi korijen stabla.

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

14

Page 15: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Implementacija stabla na osnovi

veze od čvora do roditelja (2)

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

15

Page 16: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Implementacija stabla na osnovi

veze od čvora do roditelja (3)

• Ako je MAXNODES veći od stvarnog broja

čvorova, neke klijetke su slobodne.

– Možemo ih označiti i prepoznati tako da im upišemo neku nemoguću vrijednost (npr. T[i].parent==i).

• Struktura podržava TrParent() i TrLabel().

– Ostale operacije zahtijevaju pretraživanje cijelog polja.

• Mana je da se ne pamti redoslijed braće - stablo

je zapravo neuređeno.

– Ipak, možemo uvesti umjetno pravilo da su braća

poredana po svojim imenima (indeksima).

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

16

Page 17: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Implementacija stabla na osnovi

veze od čvora do roditelja (4)

• Ova implementacija je dobra ako: – nema mnogo ubacivanja/izbacivanja čvorova,

– nije potrebna uređenost stabla, – pretežno se koriste TrParent( ), TrLabel( ).

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

17

• Primjer funkcije:

Page 18: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Implementacija stabla na osnovi

veze od čvora do djeteta i brata (1)

• Svakom čvoru eksplicitno zapišemo njegovo

prvo dijete, te njegovog idućeg brata.– Veze realiziramo pomoću kursora.

– Imena čvorova su cijeli brojevi.

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

18

Page 19: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Implementacija stabla na osnovi

veze od čvora do djeteta i brata (2)

– Polje space[]predstavlja “zalihu” klijetki od kojih će se

graditi stabla.

– i-ta klijetka opisuje i-ti čvor. Stablo je prikazano kao

vezana struktura klijetki.

– Stablo se poistovjećuje s kursorom na korijen.

– Razna stabla s kojima radimo troše klijetke iz istog (jedinstvenog) polja space[].

– Sve slobodne klijetke (koje ne pripadaju ni jednom

stablu) povezane su u vezanu listu, čiji početak pokazuje globalni kursor avail.

– Slobodne klijetke se vežu kursorima smještenim npr. u komponenti nextsibling.

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

19

Page 20: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Implementacija stabla na osnovi

veze od čvora do djeteta i brata (3)

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

20

Page 21: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Implementacija stabla na osnovi

veze od čvora do djeteta i brata (4)

• Sve operacije osim TrParent( ) mogu se

efikasno implementirati. Na primjer:

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

21

Page 22: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Implementacija stabla na osnovi

veze od čvora do djeteta i brata (5)

• Implementacija je pogodna kad

– ima puno ubacivanja/izbacivanja čvorova,

– ili kad se radi s više stabala koja se spajaju u

veća,

– ili kad se intenzivno koriste veze od roditelja

prema djeci.

• Ako je također potrebna i operacija TrParent( ), tada možemo u klijetku

polja space[] dodati i kursor na roditelja.

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

22

Page 23: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Sadržaj Poglavlja 3

3.1. (Uređeno) stablo

3.2. Binarno stablo

3.3. k-stablo

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

23

Page 24: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene bin stabla (1)

• Umjesto stabala, u računarstvu se još češće

pojavljuju jednostavnije građena binarna stabla.

• Binarno stablo T je konačan skup podataka

istog tipa koje zovemo čvorovi. Pritom vrijedi:

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

24

– T je prazan skup (prazno

stablo) , ili

– postoji jedan istaknuti čvor r

koji se zove korijen od T , a

ostali čvorovi grade uređeni

par (TL,TR) disjunktnih

(manjih) binarnih stabala.

Page 25: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene bin stabla (2)

• TL i TR zovu se lijevo i desno pod-stablo.

• Korijen od TL odnosno TR (ako postoji) je lijevo

odnosno desno dijete od r, a r je njihov roditelj.

• Primjenom rekurzije za svaki čvor možemo

ustanoviti čije je on dijete te čiji je on roditelj.

– Korijen je bez roditelja, ostali imaju točno 1 roditelja.

– Broj djece nekog čvora može biti 0, 1 ili 2.

• Ostala terminologija je ista kao kod stabla.

• Binarno stablo crta se na isti način kao uređeno.

• Primjenjuju se isti algoritmi obilaska.SPA-3 STRUKTURE PODATAKA I

ALGORITMI

25

Page 26: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene bin stabla (3)

• Binarno stablo nije specijalni slučaj uređenog:

– binarno stablo može biti prazno,

– ako čvor u binarnom stablu ima samo jedno dijete,

tada nije svejedno je li to lijevo ili desno dijete.

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

26

Page 27: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene bin stabla (4)

• Primjeri binarnih stabala.

– Ako je aritmetički izraz sastavljen od binarnih operacija,

njegova se građa može prikazati binarnim stablom.

– Znakovi su kodirani nizovima bitova. Tada se postupak

dekodiranja može prikazati binarnim stablom:

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

27

Page 28: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene bin stabla (5)

• Primjeri binarnih stabala (nastavak).

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

28

– Donošenje

odluke

opisuje se

stablom

odlučivanja.

Ako su

odgovori na

sva pitanja u

tom postupku

oblika da/ne,

stablo je

binarno.

Page 29: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene bin stabla (6)

• Primjeri binarnih stabala (drugi nastavak).

– Uređeno stablo može se interpretirati kao binarno, na

osnovi veza čvor prvo dijete i čvor idući brat.

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

29

– Binarna stabla služe za prikaz skupova, te se

pojavljuju u algoritmima za sortiranje.

Page 30: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene bin stabla (7)

• Apstraktni tip podataka BinaryTree.

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

30

Page 31: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene bin stabla (8)

• Apstraktni tip podataka BinaryTree (nastavak).

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

31

Page 32: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Svojstva i primjene bin stabla (9)

• Apstraktni tip podataka BinaryTree (drugi

nastavak).

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

32

Page 33: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Impl bin stabla pomoću pointera (1)

• Svakom čvoru eksplicitno zapišemo njegovo

lijevo i desno dijete. Veza se može zapisati

pomoću kursora ili pomoću pointera.

• Promatramo varijantu pomoću pointera:

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

33

oznaka

lijevo

dijete

desno

dijete

Page 34: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Impl bin stabla pomoću pointera (2)

• Svaki čvor prikazujemo jednom klijetkom. Čvor

je jednoznačno određen pointerom na klijetku.

• Binarno stablo se gradi kao struktura klijetki

povezanih pointerima. Binarno stablo

poistovjećujemo s pointerom na korijen.

• Prazno stablo je prikazano pointerom NULL.

• Ako koristimo funkciju BiParent( ), tada u

klijetku treba dodati još jedan pointer koji

pokazuje prema roditelju.

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

34

Page 35: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Impl bin stabla pomoću pointera (3)

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

35

Page 36: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Impl bin stabla pomoću pointera (4)

• Sve operacije iz a.t.p. BinaryTree osim BiDelete( ) i BiParent( ) mogu se

efikasno implementirati, tako da im vrijeme

izvršavanja bude O(1). Primjerice:

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

36

Page 37: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Impl potpunog bin st pomoću polja (1)

• Potpuno binarno stablo sastoji se od n

čvorova, s imenima 0, 1, 2, ..., n − 1. Pritom vrijedi:

– lijevo dijete čvora i je čvor 2i+1 (ako je 2i+1 > n−1 tada

čvor i nema lijevo dijete);

– desno dijete čvora i je čvor 2i+2 (ako je 2i+2 > n−1

tada i nema desno dijete).

• Na svim razinama osim zadnje postoje svi

mogući čvorovi. Čvorovi na zadnjoj razini

“gurnuti” su na lijevu stranu.

• Numeriranje ide s razine 0 na razinu 1, razinu 2,

itd., s lijeva na desno.SPA-3 STRUKTURE PODATAKA I

ALGORITMI

37

Page 38: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Impl potpunog bin st pomoću polja (2)

• Potpuno binarno stablo s n = 12 čvorova:

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

38

Page 39: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Impl potpunog bin st pomoću polja (3)

• Potpuno binarno stablo treba zamišljati kao

objekt sa statičkom građom.

– Ne namjeravaju se primjenjivati operacije poput BiCreate( ), BiLeftSubtree( ),

BiRightSubtree( ), jer rezultat više ne bi bio

potpuno binarno stablo.

– Umjesto toga potrebno je “manevrirati” po već

zadanom stablu te čitati ili mijenjati oznake čvorova.

– Dopušta se ubacivanje/izbacivanje čvorova na

desnom kraju zadnje razine.

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

39

Page 40: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Impl potpunog bin st pomoću polja (4)

• Potpuno binarno

stablo može se

prikazati u

računalu

pomoću polja. – i-ta klijetka polja

sadrži oznaku

čvora i.

– Imamo kursor

koji pokazuje

zadnji čvor n−1.

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

40

Page 41: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Impl potpunog bin st pomoću polja (5)

• Potrebne su definicije:

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

41

• Manevriranje po potpunom binarnom stablu:

- Korijen je u 0-toj klijetki.

- Lijevo i desno dijete čvora iz i-te klijetke nalaze se u

(2i+1)-oj i (2i+2)-oj klijetki (ako one postoje).

- Roditelj čvora iz i-te klijetke je u (i-1)/2 – toj klijetki.

Page 42: Poglavlje 3: Stabla - unizg.hrweb.studenti.math.pmf.unizg.hr/~manger/spa/SPA-3.pdfObilazak stabla (1) •Obilazak je algoritam kojim “posjećujemo” čvorove stabla, svaki čvor

Impl potpunog bin st pomoću polja (6)

• Prikaz se donekle može proširiti na binarna stabla

koja nisu potpuna.– Binarno stablo nadopunimo “lažnim” čvorovima, pa ga

zatim prikazujemo kao da je potpuno.

– Metoda se često ne isplati jer troši previše memorije.

SPA-3 STRUKTURE PODATAKA I

ALGORITMI

42