Miten käydä läpi puun alkiot (traversal)?

Samankaltaiset tiedostot
Algoritmit 1. Luento 8 Ke Timo Männikkö

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint.

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 2. Luento 4 Ke Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

Algoritmit 1. Luento 7 Ti Timo Männikkö

(a) L on listan tunnussolmu, joten se ei voi olla null. Algoritmi lisäämiselle loppuun:

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Binäärihaun vertailujärjestys

1.1 Tavallinen binäärihakupuu

Algoritmit 2. Luento 5 Ti Timo Männikkö

Kysymyksiä koko kurssista?

58131 Tietorakenteet (kevät 2008) 1. kurssikoe, ratkaisuja

private TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;

Algoritmit 2. Luento 5 Ti Timo Männikkö

Muita linkattuja rakenteita

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

A TIETORAKENTEET JA ALGORITMIT KORVAAVAT HARJOITUSTEHTÄVÄT 3, DEADLINE KLO 12:00

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)

lähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa

Algoritmit 2. Luento 6 To Timo Männikkö

puuta tree hierarkkinen hierarchical

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

Luku 8. Aluekyselyt. 8.1 Summataulukko

Algoritmit 1. Luento 6 Ke Timo Männikkö

Kierros 4: Binäärihakupuut

Algoritmit 2. Luento 6 Ke Timo Männikkö

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012

B + -puut. Kerttu Pollari-Malmi

811312A Tietorakenteet ja algoritmit V Hash-taulukot ja binääriset etsintäpuut

CS-A1140 Tietorakenteet ja algoritmit

7. Tasapainoitetut hakupuut

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut

6. Hakupuut. Hakupuu (engl. search tree) on listaa huomattavasti edistyneempi tapa toteuttaa abstrakti tietotyyppi joukko

Algoritmit 2. Luento 7 Ti Timo Männikkö

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 1, , vastauksia

14 Tasapainotetut puurakenteet

Tietorakenteet, laskuharjoitus 6,

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

Luku 4. Tietorakenteet funktio-ohjelmoinnissa. 4.1 Äärelliset kuvaukset

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen)

Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016

1 Puu, Keko ja Prioriteettijono

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Koe ma 1.3 klo salissa A111, koeaika kuten tavallista 2h 30min

Algoritmi on periaatteellisella tasolla seuraava:

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. joulukuuta 2015

Kierros 3: Puut. Tommi Junttila. Aalto University School of Science Department of Computer Science

4. Puut. Kuva 4.1. Sukupuu Puun abstrakti tietotyyppi

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Koe ma 28.2 klo salissa A111, koeaika kuten tavallista 2h 30min

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe ratkaisuja (Jyrki Kivinen)

4. Joukkojen käsittely

5. Keko. Tietorakenne keko eli kasa (heap) on tehokas toteutus abstraktille tietotyypille prioriteettijono, jonka operaatiot ovat seuraavat:

Algoritmit 2. Luento 3 Ti Timo Männikkö

.. X JOHDATUS TEKOÄLYYN TEEMU ROOS

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

Algoritmit 2. Luento 3 Ti Timo Männikkö

Eräs keskeinen algoritmien suunnittelutekniikka on. Palauta ongelma johonkin tunnettuun verkko-ongelmaan.

58131 Tietorakenteet ja algoritmit Uusinta- ja erilliskoe malliratkaisut ja arvosteluperusteet

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

58131 Tietorakenteet Erilliskoe , ratkaisuja (Jyrki Kivinen)

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Paikkatiedon hallinta ja analyysi 4. Paikkatiedon indeksointi (jatkoa)

CS-A1140 Tietorakenteet ja algoritmit

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

5. Puut. Kuva 5.1. Sukupuu Puun abstrakti tietotyyppi

Oikeasta tosi-epätosi -väittämästä saa pisteen, ja hyvästä perustelusta toisen.

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

Algoritmit 2. Demot Timo Männikkö

Johdatus graafiteoriaan

Algoritmit 1. Luento 5 Ti Timo Männikkö

Datatähti 2019 loppu

Algoritmit 1. Luento 14 Ke Timo Männikkö

Fibonacci-kasoilla voidaan toteuttaa samat operaatiot kuin binomikasoilla.

Algoritmit 2. Luento 9 Ti Timo Männikkö

Tietorakenteet, laskuharjoitus 10, ratkaisuja. 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

A TIETORAKENTEET JA ALGORITMIT

Paikkatiedon käsittely 5. Paikkatiedon indeksointi

Tietorakenteet ja algoritmit. Kertaus. Ari Korhonen

TIE Tietorakenteet ja algoritmit 261

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Transkriptio:

inääripuut ieman lisää aidon binääripuun ominaisuuksia lehtisolmuja on yksi enemmän kuin sisäsolmuja inääripuut tasolla d on korkeintaan 2 d solmua pätee myös epäaidolle binääripuulle taso 0: 2 0 = 1 solmu 4 2 8 1 lehdet++ lehdet++ lehdet sisäsolmut++ pätee jos puussa pelkkä juuri, ja kahden lapsen lisäys lehteen säilyttää tasapainon taso 1: 2 1 = 2 solmua taso 2: 2 2 = 4 solmua taso : 2 = 8 solmua h:n korkuisessa puussa vähintään 1+2h ja enintään 2 h+1 1 solmua Σ h i=0 2i = 2 h+1 1 (induktio: 2 h+1 1 + 2 h+1 = 2 h+2 1) Tietorakenteet, syksy 200 1 Tietorakenteet, syksy 200 2 inääripuut lehtiä vähintään h + 1 ja enintään 2 h n = lehdet + sisäsolmut lehdet = sisäsolmut + 1 1 + 2h n 2 h+1 1 1 + 2h (2 lehdet) 1 2 h+1 1 sisäsolmuja vähintään h ja enintään 2 h 1 n solmuisen aidon binääripuun korkeus h vähintään log(n + 1) 1 ja enintään (n 1)/2 hieman aiemmin: 1 + 2h n 2 h+1 1 Puun alkioiden läpikäynti iten käydä läpi puun alkiot (traversal)? aksi päätyyppiä: leveyssuuntainen (breadth-first) ja syvyyssuuntainen (depth-first) kulku (haku) Tietorakenteet, syksy 200 Tietorakenteet, syksy 200 4

Puun leveyssuuntainen läpikäynti eveyssuuntainen kulku: edetään tasoittain taso 0: taso 1: -- taso 2: ---- taso : ----- Toteutus..? onon avulla Puun leveyssuuntainen läpikäynti S-traversal(T) alusta jono Q Q.nqueue(Root(T)) while Q.spmty() = false do v Q.equeue() prosessoi solmu v for u hildren(v) do Q.nqueue(u) jono Q käydyt...... Tietorakenteet, syksy 200 Tietorakenteet, syksy 200 Syvyyssuuntainen kulku 1. edetään syvemmälle käymättömiin solmuihin, kunnes saavutaan lehteen 2. peruutetaan ylöspäin lähimpään solmuun, jossa vielä käymätön lapsisolmu ( askel 1) -------------------- -------- Tietorakenteet, syksy 200 apset järjestyksessä vasemmalta oikealle tutkiva syvyyssuuntainen kulku vastaa ns. ulerin matkaa (uler tour) koske vasemmalla kädellä juurisolmuun ja kierrä koko puu vastapäivään niin, että käsi koskettaa kokoajan puuta Tietorakenteet, syksy 200 8

Syvyyssuuntaisen kulun toteutus? reitin kulku yksinkertaista rekursiivisesti S-route(v) for u hildren(v) do S-route(u) huom! tässä pelkkä reitti, ei solmujen prosessointia aikavaativuus? (n) Tietorakenteet, syksy 200 Solmujen prosessointi? reitti: ----------------- ----------- sama solmu reitissä useaan kertaan Yleiset tavat: esijärjestys (preorder) ja jälkijärjestys (postorder) Tietorakenteet, syksy 200 10 sijärjestys sijärjestys: solmu käsitellään (siinä käydään ), kun solmuun saavutaan ensimmäistä kertaa (=ylhäältä) Reitti: ----m--m--m-e---a-e-i---b-b-i----c--c-g-i solmu käsitellään: iso kirjain solmun kautta vain kuljetaan: pieni kirjain Tietorakenteet, syksy 200 11 sijärjestys sijärjestyksessä tapahtuvan solmujen käsittelyn toteutus? suoraan ulerin matkan pohjalta (edellä: Sroute) Preorder-traversal(v) for u hildren(v) do Preorder-traversal(u) ainoa muutos: lisättiin alkuun solmun v prosessointi Tietorakenteet, syksy 200 12

sijärjestys simerkki esijärjestyksen sovelluksesta: rakenteisen dokumentin tulostus kirja esipuhe luku 1 luku 2 hakemisto älkijärjestys älkijärjestys: solmu käsitellään (siinä käydään ), kun solmuun tullaan viimeistä kertaa juuri ennen ylöspäin peruuttamista (juurisolmu: kun kaikki lapset jo käsitelty) luku 1.1 luku 1.2 luku 2.1 luku 2.2 Reitti: i-e-m--m--m---e-a----i-b--b--i-g-c--c---- Tietorakenteet, syksy 200 1 Tietorakenteet, syksy 200 14 älkijärjestys älkijärjestyksen toteutus samaan tapaan ulerin matkan pohjalta Postorder-traversal(v) for u hildren(v) do Postorder-traversal(u) ainoa muutos: lisättiin loppuun solmun v prosessointi älkijärjestys simerkki jälkijärjestyksen sovelluksesta: aritmeettisen lausekkeen laskenta = 2 = 0 = + = 1 = + = 8 8 = 0 2 4 (( ) ( + ( ))) ((2 4) + 8) = 0 Tietorakenteet, syksy 200 1 Tietorakenteet, syksy 200 1

Välijärjestys inääripuussa lisäksi: välijärjestys (inorder) solmu v käsitellään sen vasemman alipuun jälkeen, mutta ennen oikeaa alipuuta Reitti: i-e-c----c---e--b----b-i Välijärjestys yös välijärjestyksen toteutus suoraviivaisesti ulerin matkan pohjalta norder-traversal(v) if solmulla v on vasen lapsi then norder-traversal(efthild(v)) if solmulla v on oikea lapsi then norder-traversal(righthild(v)) Tietorakenteet, syksy 200 1 Tietorakenteet, syksy 200 18 Välijärjestys simerkki välijärjestyksen sovelluksesta: binäärihakupuun alkioiden tulostus hakupuun ominaisuus: vasemman alipuun arvot solmun arvo oikean alipuun arvot 8 1 0 2 4 välijärjestyksessä alkiot käsitellään suuruusjärjestyksessä 0, 1, 2,, 4,,,, 8, Tietorakenteet, syksy 200 1