Está en la página 1de 34

ALGORITMIISTRUKTUREPODATAKA Predavanje21/12/2009 9.

Binarnastablapretraivanja

http://www.riteh.hr/zav_katd_sluz/zr/nastava/asp

Prolapredavanja

Ponavljanje:pokazivaiuCu Analizaalgoritama Osnovnitipovipodataka

ADT:lista,stog,red

Rekurzijaiiteracija Sortiranjepodataka Stabla

Stabla zatostabla? definicija terminologija primjeri Binarnastabla definicija svojstva primjer:aritmetikiizrazi obilazakbinarnihstabala Implementacija pokazivaima poljem Gomila(Heap) Heapsort Prioritetnired

Sadrajpredavanja

Binarnastablapretraivanja Balansiranabinarnastabla AVLstabla

Binarnastablapretraivanja (binarysearchtrees)

Ponavljanje

Nekeoperacijelinearnihstrukturapodatakakaopoljeili vezanalistanisuuinkovite.Koje?

A B zadnji C

Vezanalista
maxlength

Polje

Binarnastablapretraivanja(BST)
definicija

Binarnostablopretraivanjajebinarnostabloukojemu:

svakivorimaklju kljusvakogvorajeveiodkljuevavorovalijevog podstablaimanjiodkljuevavorovadesnogpodstabla (tzv.svojstvobinarnogstablapretraivanja)


48 25 17 5 21 32 28

89 65 96

Binarnastablapretraivanja(BST)
primjeri
H B G E 12 8 13 9

L I M

Da

Ne

4 3

11 10

Binarnastablapretraivanja(BST)

BSTubrzavaoperacijupretraivanja.Zato? KakotraimoelementpokljuuuBST? UkojemsluajupretraivanjeBSTnijeuinkovitijeod pretraivanjaliste?


48 25 17 5 21 32 28

89 65 96

Binarnastablapretraivanja(BST)

Dvabinarnastablapretraivanjasaistimskupom elemenata:
17 89 32 96 48 32 25 89 96

48 25 17

ProsjenadubinavorajelogN,anajgorajeN1

Binarnastablapretraivanja
operacije

empty():vraatrueakoBSTnemavorova findkey(keyk):traivorsakljuemk.

akojestablopraznovraafalse akogapronaepostavljacurrentnavorivraatrue akoganepronaepostavljacurrentnavorgdjebisenovi elementmoraododatikaodijeteivraafalse stablonesmijebitipuno akovepostojikljukvraafalse usuprotnomubacujenovielementipostavljacurrent

insert(keyk,typeval):ubacujenovielement

retrieve():akostablonijeprazno,vraapodatkevorana kojipokazujecurrent delete(keyk):brievorsakljuemk

akostablonijepraznopostavljacurrentnakorijen

findkey

pretraivanjepokljuuprimjer:
23

Tleft

Tright

akotraimoklju23,ondasmogotovi akotraimoklju<23ondatraimolijevopodstablo akotraimoklju>23ondatraimodesnopodstablo

findkey

Primjer:traimo28

usporedi28i48(korijen),idilijevo; usporedi28i25,ididesno; usporedi28i32,idilijevo; usporedi28i28,bingo!


48 25 17 5 21 32 28 43

89 65 96

najmanjiinajveielement

findmin:vraanajmanjielementustablu

poniodkorijenaiidilijevosvedokimadjece poniodkorijenaiididesnosvedokimadjece

findmax:vraanajveielementustablu

48 25
NAJMANJI ELEMENT

89 32 28 65 96
NAJVEI ELEMENT

17 21

Kojajesloenostoperacijafindminifindmax?

InorderobilaenjeBSTstabla

inorderobilaenjestablaispieelementesortiranepo kljuu
48 25 17 21 32 28 65 89 96

Inorder:17,21,25,28,32,48,65,89,96

insert

poneistokaoifindKey

sputasenizstablotraeielementsakljuemk akoganepronaeondaubacinovielementnazadnje mjestogdjejestao


48 25 17 21 32 28 43 65 89 96

Primjer:ubaci43

sloenostoperacijejeistakaoizafindkey,findmin, findmax: O(visinastabla)

delete

operacijadeletejenajsloenija

moraseznatitouinitisadjecompobrisanogvora vorsa0djecesejednostavnopobrie kodvorasa1djetetom,dijetesepromoviranapoziciju pobrisanogvora

brisanjevorasa0ili1djetetomjelako:

kadavorima2djecemorasepazitidanakonbrisanja stablozadrisvojstvobinarnogstablapretraivanja

nemoesejednostavnopromoviratijednodijete

vorkojisebriesezamijenisasvojimsljednikom (successor)

natajnainsezadravasvojstvobinarnogstabla pretraivanja.Zato?

delete
primjeri

Pobrii32:
48 25 17 21 32 28 17 21 25 32 28 48

delete
primjeri

Pobrii25:

zamijenigasanajmanjimelementomdesnogpodstabla (sljednik)tepobriisljednika

sljednikilinemadjece,iliimasamodesnodijete.Usuprotnombi dijetebilomanjeibilobiizabranokaosljednikod25 48 25 28 32 28 29 17 21 28 29

48

17 21

32

Balansiranastabla

Balansiranabinarnastabla

UnajgoremsluajuvisinabinarnogstablapretraivanjajeN1

toznaidajevrijemepotrebnozaizvravanjeveineoperacija moebitiO(N)unajgoremsluaju

Idealnobibiloimatitoniestablo Moemoodravativisinustablatakodasloenostoperacija ostajeO(logN)? Da,takvastablasezovubalansiranabinarnastabla pretraivanja Primjeribalansiranihbinarnihstabala:


AVLstabla Crvenocrnastabla

Balansiranjebinarnihstabala

Prvipokuaj:

zahtjevatidalijevoidesnokorijenovopodstabloimajuistu visinu
48 25 17 28 32 21 29

moeibolje

Balansiranjebinarnihstabala

Drugipokuaj:

zahtjevatidasvakivorimalijevoidesnopodstabloistevisine

48 25 17 29 32 28 21

previerestriktivno

Balansiranjebinarnihstabala

Treipokuaj:

zahtjevatidasevisinalijevogidesnogpodstablasvakogvora razlikujuzanajvie1
48 25 32 21 25 17 48 32 28 21 17 da da

48 25 17 17 ne 32 28

17

AVLstabla

AVLstablo

AVLstablojebinarnostablopretraivanjaukojemu:

sevisinalijevogidesnogpodstablasvakogvorarazlikujuza najvie1 akoubacivanjeilibrisanjevoraporemetiravnoteustabla, rebalansiranjesemoeodmahizvriti

akoseporemetiravnoteadijelastabla,rebalansiranjesemoe vritilokalno

rebalansiranjesepostie"rotacijama"stabla
Y X X

C B
Prijerotacije

B
Poslijerotacije

Ubacivanje(insert)

Problem:

pronaivorPkojemuseravnotea(balancefactor)primijenila nakonubacivanjanovogvora

TraenjevoraP:

penjisepremakorijenuodpozicijenovogvoraiprovjeravaj ravnoteu(aurirasebalancefactor)odvorovanaputu prvivorkojemubalancefactorpostane+/2jekorijen podstablakojemutrebaponovnouspostavitiravnoteu

Ubacivanjevora(insert)

sluaj1:vorseubacujeupodstabloA AVLsvojstvovienevrijediuvorux

rjeenje:jednostrukarotacijasalijevimdjetetom

Ubacivanjevora(insert)

sluaj2:vorseubacujeupodstabloC AVLsvojstvovienevrijediuvorux

rjeenje:jednostrukarotacijasadesnimdjetetom

Ubacivanjevora(insert)
primjer
7 x 9 6 2 5 3 2

7 5 3

Ubaci2
3

5 y 6
B A

9
C

rotirajxiy
7

Ubacivanjevora(insert)

sluaj1:vorseubacujeupodstabloB1iliB2 AVLsvojstvovienevrijediuvorux

rjeenje:dvostrukarotacijasalijevimdjetetom

Ubacivanjevora(insert)

sluaj2:vorseubacujeupodstabloB1iliB2 AVLsvojstvovienevrijediuvorux

rjeenje:dvostrukarotacijasadesnimdjetetom

Ubacivanjevora(insert)
primjer
8 x 9 7

8 5 3

Ubaci6
3
A

5 y 7 6
B z

9
C

7 5 3

rotirajx,yiz
8

Ubacivanjevora(insert)

Kompletanprimjerstvaranja AVLstablanaploi:

3,2,1,4,5,6,7,16,15,14

AVLstablo
zakljuak

AVLstablaodravajubinarnostablopretraivanjau ravnoteiprilikomnjegovogstvaranjakadasevorovi ubacuju Postojiialternativanpristup(neemogavidjetiuovim predavanjima)ukojemusestablarebalansirajuneprilikom ubacivanjaelemenataveprilikompristupanjaistim(splay trees).

También podría gustarte