Puun määritelmä Puun määritelmä Puu on yhden tai useamman kytketyn solmun muodostama hierarkinen joukko Lehtisolmuista juurisolmuun on yksikäsitteinen polku Käytetään haku, lajittelu ja grafiikka algoritmeissa juurisolmu lehtisolmuja sisäsolmuja
Jan 08, 2016
Puun määritelmäPuun määritelmä Puu on yhden tai useamman kytketyn solmun muodostama hierarkinen
joukko Lehtisolmuista juurisolmuun on yksikäsitteinen polku Käytetään haku, lajittelu ja grafiikka algoritmeissa
juurisolmu
lehtisolmuja
sisäsolmuja
PuutPuut
Puu koostuu solmuistaSolmut koostuvat tietoalkiosta ja linkeistä
solmulinkki
tietoalkio
Puut – solmun astePuut – solmun aste
Solmun aste (out-degree) tarkoittaa alipuiden lukumäärää
Puun aste on maksimi solmujen asteista
solmun aste = 2solmun aste = 3
Puut – vanhempisuhdePuut – vanhempisuhde
Solmu jolla on alipuita on alipuiden juurisolmujen vanhempi ja alipuiden juurisolmut ovat lapsia
B on E:n ja F:n vanhempi A:lla ei ole vanhempia
Puut – lapsisuhdePuut – lapsisuhde
Solmu jolla on vanhempi on sen lapsi
B, C ja D ovat A:n lapsia
F:llä ei ole lapsia
Puut – sisaruussuhdePuut – sisaruussuhde
Saman vanhemman lapset ovat sisaruksia
B, C ja D ovat sisaruksia keskenään
A:lla ei ole sisaruksia
Puut – esivanhemmatPuut – esivanhemmat
Kaikki solmut juurisolmusta solmun X vanhempaan ovat X:n esivanhempia
A, B ja E ovat L:n esivanhempia
A:lla ei ole esivanhempia
Puut – jälkeläisetPuut – jälkeläiset
Kaikki alipuun jonka juurisolmuna X on ovat X:n jälkeläisiä
A: jälkeläiset ovat: B,C,D,E,F,G,H,I,J,K,L,M
F:llä ei ole jälkeläisiä
B:n jälkeläiset ovat:E, F, K ja L
Puut – solmun tasoPuut – solmun taso
Juurisolmu on tasolla yksiMuiden taso on vanhemman taso + 1
1
2
3
4
taso
BinääripuuBinääripuu
Solmun lapsien maksimimäärä on kaksi
12
453
7 31 55
Binääripuu toteutettuna linkeillä Binääripuu toteutettuna linkeillä
Binääripuu toteutettuna Binääripuu toteutettuna taulukon avullataulukon avulla
Täydellinen (perfect) Täydellinen (perfect) binääripuubinääripuu
Jokaisella solmulla on 0 tai 2 lastaKaikki lehtisolmut ovat samalla tasolla
A
CB
E F GD
Täysi binääripuuTäysi binääripuu
Jokaisella solmulla on 0 tai 2 lasta
A
CB
ED
Täydellinen (complete) Täydellinen (complete) binääripuubinääripuu
Kaikki tasot ovat täynnä alinta tasoa lukuunottamatta Alimmalla tasolla solmut ovat vasemmassa
reunassa
A
CB
E FD
Complete Tree
Täydellinen (complete) Täydellinen (complete) binääripuubinääripuu
Kaikki tasot ovat täynnä alinta tasoa lukuunottamatta Alimmalla tasolla solmut ovat vasemmassa
reunassa
A
CB
E F G
Not a Complete Tree
Solmujen lukumäärä Solmujen lukumäärä binääripuussa – huonoin tapausbinääripuussa – huonoin tapausSolmujen lukumäärä on NHuonoimmassa tapauksessa (lista) puun
syvyys on NA
C
B
Solmujen lukumäärä Solmujen lukumäärä binääripuussa – paras tapaus binääripuussa – paras tapaus
Parhaassa tapauksessa puu on täydellinen (perfect)
A
CB
E F GD
Solmujen lukumäärä Solmujen lukumäärä täydellisessä binääripuussatäydellisessä binääripuussa
Tasolla 1 on yksi solmuTasolla 2 on kaksi solmuaTasolla 3 on neljä solmua…Tasolla n on 2n-1 solmua
Solmujen lukumäärä Solmujen lukumäärä täydellisessä binääripuussatäydellisessä binääripuussa
Tasolla n on 2n-1 solmuan:llä tasolla on yhteensä N=1+21+22+…+2n-2+2n-1=2n-1 solmuaTällöin täydellisen (perfect) binääripuun
syvyys n=log2(N+1)
Täysi ja täydellinen binääripuu minimoivat puun syvyyden, joka nopeuttaa operaatioita (lisää, etsi, tuhoa).
Binäärinen hakupuuBinäärinen hakupuu
Jokaisessa solmussa on yksikäsitteinen avainvasemmat jälkeläiset < nykyinen solmu <
oikeat jälkeläiset 9
116
7 105
Avaimen poisto binäärisestä Avaimen poisto binäärisestä hakupuustahakupuusta
Poistetaan avain 60
Puussa kulkeminenPuussa kulkeminen
Läpikäyntijärjestyksiä: - esijärjestys (preorder) - sisäjärjestys (inorder) - jälkijärjestys (postorder) - tasojärjestys (level order)
EEsijärjestys (preorder)sijärjestys (preorder)
Järjestys: juuri – vasen alipuu - oikea alipuuA B D E C F
A
CB
E FDvoid esijarjestys(puuos alkio){ if(alkio){ tulosta_alkio(alkio); esijarjestys(alkio->vasen); esijarjestys(alkio->oikea); }
depth first-haku: “etsitään tietty haara mahdollisimman pitkälle ennen kuin peräännytään”
Binääripuu animaatioitaBinääripuu animaatioita
http://www.student.seas.gwu.edu/~idsv/idsv.html
SisäSisäjjärjesärjestys (tys (ininorder)order)
Järjestys:vasen alipuu - juuri - oikea alipuuD B E A F C
A
CB
E FDvoid sisajarjestys(puuos alkio){ if(alkio){ sisajarjestys(alkio->vasen); tulosta_alkio(alkio); sisajarjestys(alkio->oikea); }• hakupuun sisältö aakkostettuna
Binäärisen hakupuun läpikäynti Binäärisen hakupuun läpikäynti sisäsisäjjärjesärjestytyksessäksessä ( (ininorder)order)
Järjestys:vasen alipuu - juuri - oikea alipuu5 6 7 9 10 11
9
116
7 105void sisajarjestys(puuos alkio){ if(alkio){ sisajarjestys(alkio->vasen); tulosta_alkio(alkio); sisajarjestys(alkio->oikea); }
JälkijärjesJälkijärjestys (tys (postpostorder)order)
Järjestys:vasen alipuu - oikea alipuu – juuriD E B F C A
A
CB
E FDvoid jalkijarjestys(puuos alkio){ if(alkio){ jalkijarjestys(alkio->vasen); jalkijarjestys(alkio->oikea); tulosta_alkio(alkio); }
TasojärjesTasojärjestys (level order)tys (level order)
Järjestys:A B C D E F
A
CB
E FD
breadth first haku: “etsitään tietyllä etäisyydellä juuresta olevia solmuja.”
Maksimi- ja minimikekoMaksimi- ja minimikeko
Täydellinen binääripuu jonka jokaisen solmun avain on suurempi (pienempi) tai yhtäsuuri kuin lasten avain
Suurimman (pienimmän) alkion etsiminen on nopeaa
ValintapuuValintapuu