Top Banner
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
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

Jan 23, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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