Stog Stablo

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 32

Stog

dodavanje oduzimanje
Struktura
Stog (stack) – niz elemenata u kojem se dodavanje i brisanje mogu
obavljati na jednom kraju niza (LIFO). Nije moguće izvaditi ili
umetnuti bilo koji element unutar stoga dok se ne „skinu“ svi
elementi iznad njega. Dakle posljednji pohranjeni podatak prvi ide na
obradu.
Osnove operacije su :
Push – dodavanje elementa na stog
Pop – brisanje (oduzimanje ili dohvaćanje) elementa sa stoga
Prefiksni izraz
- * / 15 - 7 + 1 1 3 + 2 + 1 1 = Traži operator te
potom dva
- * / 15 - 7 2 3 + 2 + 1 1 = operanda. Ukoliko se
- * / 15 5 3+2+11= naiđe na drugi
operator prije nego su
-* 3 3+2+11= operandi pronađeni,
stari se operator stavi
- 9 +2+11= sa strane sve dok se
- 9 +2 2 = ne razriješi ovaj novi
operator.
- 9 4 =
5
Stanje stoga za prefiksni izraz
- * / 15 - 7 + 1 1 3 + 2 + 1 1
1
1
+ 2 1
7 7 1
- - 5 + 2
15 15 15 3 2 2
/ / / 3 3 + + 4
* * * * * 9 9 9 9
- - - - - - - - - 5
Postfiskni izraz na stogu
512+4*+3-

5
1
2
2 4
+
3 12
4 1 1 3 3 14
17
*
+ 5 5 5 5 5 5 17
3
-
Izračunaj
• Zadan je matematički izraz u postorder
zapisu: 17 4 * 5 + 10 2 / 3 * 7 - - Koristeći
stog riješi matematički izraz.

/ * -
* + 2 3 7 -
4 5 10 5 15 8
17 68 73 73 73 73 65
Izračunaj 5 6 2 + * 12 4 / -
Operand/operacija stog
5 5
6 5,6
2 5,6,2
+ 5,8
* 40
12 40,12
4 40,12,4
/ 40,3
- 37
Zadatak
(8+3)*5-(2/(3-1))
Pretvori u postfiksni zapis, Pretvori u prefiksni izraz,
izračunaj i prikaži stog izračunaj i prikaži stog

83+5*231-/- -*+835/2–31
85+5*631*/- -*+855/6*31
DZ
Zadajte si dva izraza u postfiksnom i prefiksnom obliku, riješite i
prikažite stog
Stablo
Stablo (binarno stablo) – hijerarhijska struktura u kojoj svaki element
ima samo jednog oca i dvoje djece.
Elemente stabla nazivamo čvorovima.
Čvorovi s istim roditeljem su siblinzi.
Korijen je čvor bez roditelja.
Čvorovi na dnu stabla su listovi.
Stupanj stabla je najveći broj djece koje posjeduje neki čvor.
Visina stabla je duljina najduljeg puta od nekog lista prema korijenu.
Stablo nije linearna struktura.
Binarno stablo
Binarno stablo je
potpuno ukoliko su svi
nivoi stabla puni (zadnji
ne mora)
Na zadnjem nivou se
djeca popunjavaju s
lijeva na desno bez
praznina.
Obilazak stabla
postorder – djeca (imaju
prednost) pa korijen (LDN) A
preorder- korijen pa djeca (NLD) B C
inorder - lijevo dijete, korijen,
desno dijete (LND)
D E F G
Postorder: DEBFGCA
Preorder: ABDECFG
Inorder: DBEAFCG
Obiđi stablo na sva tri načina
PREORDER(NLD):
0, 1, 2, 4, 7, 8, 5, 9, 3, 6
INORDER(LND):
1, 0, 7, 4, 8, 2, 9, 5, 6, 3
POSTORDER(LDN):
1, 7, 8, 4, 9, 5, 2, 6, 3, 0
Obilasci stabla
DFS:
Inorder (Left, Root, Right) : 4 2 5 1 3
Preorder (Root, Left, Right) : 1 2 4 5 3 Postorder
(Left, Right, Root) : 4 5 2 3 1

BFS : 1 2 3 4 5
Točni odgovori?
Visualgo.net
Nacrtaj stablo i obiđi ga
◦ DFS (preorder)
◦ BFS

Inorder (binary tree)


Riješi
NLD (preorder): R
R, a, c, f, d, b, e, g, h
LND (inorder): a b
f, c, a, d, R, b, g, e, h
c e
LDN (postorder):
f, c, d, a, g, h, e, b, R f d
Za sva tri obilaska koristi se stog. g h
DZ
Nacrtaj dva stabla i obiđi ih inorder, postorder i preorder načinom, te BFS-om
Algoritam NLD obilaska
Isprazniti stog
Ispisati korjen stabla i staviti ga na stog
Sve dok stog nije prazan činiti
Sve dok cvor ima lijevi nasljednik činiti
Postavit cvor=lijevi
Staviti cvor na stog
Ispisati cvor
Kraj sve dok
Sve dok cvor nema desni nasljednik i stog nije prazan činiti
Skinuti cvor sa stoga
Kraj sve dok
Ako je stog prazan završiti obilazak
Ispisati desni
Staviti desni na stog
Kraj sve dok
Algoritam LND obilaska
Isprazniti stog i staviti “KRAJ” na stog
Postavit cvor = korjen stabla
Ponovljati
Sve dok postoji lijevi nasljednik činiti
Staviti cvor na stog
Postaviti cvor=lijevi
Kraj sve dok
Postaviti desni_nas=0
Ponavljati
Ispisati cvor
Ako postoji desni nasljednik
Postaviti cvor=desni nasljednik
Postaviti desni_nas=1
U suprotnom skinuti cvor sa stog-a
Dok je zadovoljen uvjet desni_nas=0 i stog nije
prazan
Dok je zadovoljen uvjet ima podataka na stog-u
Algoritam LDN obilaska
Isprazniti stog
Postaviti cvor=korjen stabla
Ponavljati
Sve dok postoji lijevi činiti
Staviti cvor na stog
Ako postoji desni staviti ga na stog s oznakom “D”
Postaviti cvor=lijevi
Kraj sve dok
Staviti cvor na stog
Ako postoji desni staviti ga na stog s oznakom”D”
Postaviti desni_nas=0
Ponavljati
Skinuti cvor sa stog-a
Ako cvor ima oznaku “D” postavit desni_nas=1
U suprotnom ispisati cvor
Do uvjeta prazan stog ili desni_nas=1
Do uvjeta prazan stog
Napiši rezultat obilaska nacrtanog stabla preorder
načinom!

preorder- korijen pa djeca (NLD)


Zadatak
Nacrtaj binarno stablo tako da pri obilasku inorder načinom dobijemo točan abecedni poredak.
Ulazni elementi stabla su zadani ovim redoslijedoma D B F A C E G. Početak (korijen) je slovo D.

LND (inorder)
Rješenje
D

B F

A C E G
Zadatak
Zadano je stablo
Odredi obilazak: BFS-om, inorder,
preorder i postorder

NLD (preorder)

LDN (postorder)

• BFS: A, B, C, D, E, R, S, F, G, L

• In: F, D, G, B, L, E, A, R, C, S

• Post: F, G, D, L, E, B, R, S, C, A
• Pre: A, B, D, F, G, E, L, C, R, S
Nacrtaj graf
V={1, 2, 3, 4, 5, 6}
E={1 2, 2 3, 3 4, 4 5, 5 6, 1 6, 1 5, 2 6, 3 6}
Izradi matricu i listu susjedstva za graf
Od početnog čvora 1 obiđi graf BFS-om i DFS-om
Nacrtaj u visualgo.net graf i provjeri rezultat
Rješenja

BFS
◦ 125634

DFS
◦ 123456
Izračunaj i prikaži stog. Odredi infiksni
izraz
24/56-*

33 (5+6)*3 -0,5 (2/4)*(5-6)


Izračunaj
15 7 1 1 + − ÷ 3 × 2 1 1 + + −
15 7 1 1 + − ÷ 3 × 2 1 1 + + − =

15 7 1 1 + − ÷ 3 × 2 1 1 + + − =

15 7 1 1 + − ÷ 3 × 2 1 1 + + − =

15 7 1 1 + − ÷ 3 × 2 1 1 + + − =

15 7 1 1 + − ÷ 3 × 2 1 1 + + − =

15 7 2−÷3×211++−=

15 5÷3×211++−=

33×211++−=

33×211++−=

9211++−=

9211++−=

9211++−=

9211++−=

92 2+−=

9 4−=

5=

You might also like