Binäärinen hakupuu Jokaisessa solmussa on yksikäsitteinen avain

Slides:



Advertisements
Samankaltaiset esitykset
Yleistä Läsnäolovelvollisuus Poissaolojen selvitys Käyttäytyminen
Advertisements

Tietorakenteet ja algoritmit
15. Loogiset operaatiot.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
© Hannu Laine 1 Tietorakenteet ja algoritmit Funktio-osoittimet Funktio-osoittimen ja taulukko-osoittimen vertailu Funktio-osoittimen käyttötapoja.
JavaScript (c) Irja & Reino Aarinen, 2007
1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra.
Binääripuut Kaksihaaraista puuta sanotaan binääripuuksi:
Tietorakenteet ja algoritmit
11/9/2012 © Hannu Laine 1 Tietorakenteet ja algoritmit Elegantti toteutus funktiolle insert_to_list_end Alkion lisäys sisällön mukaan järjestettyyn listaan.
Markku Siermala, IMT Bioinformatiikan koulutusohjelma
Tavanomaisimpien tietorakenteiden ja algoritmien testauksesta
Rakenteinen ohjelmointi
Yhteystila-algoritmi
22. Taulukot.
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap.
KERTAUSTA PERUSASTEEN MATEMATIIKASTA Piia junes
Säännöt 30 kuvaa 45 sekuntia / kuva 10 sekuntia kirjoitusaikaa Vastaus suomeksi, ruotsiksi, englanniksi, tieteellisellä nimellä tai sen 3+3 lyhenteellä.
Säännöt 30 kuvaa 45 sekuntia / kuva 10 sekuntia kirjoitusaikaa Vastaus suomeksi, ruotsiksi, englanniksi, tieteellisellä nimellä tai sen 3+3 lyhenteellä.
V V V V V V V V Kuuden suurimman kaupungin lasten päivähoidon palvelujen ja kustannusten vertailu 2009 Kuuden suurimman kaupungin lasten päivähoidon palvelujen.
TMA.003 / L3 ( )1 3. Funktioista 3.1. Kuvaus ja funktio Olkoon A ja B ei-tyhjiä joukkoja. Tulojoukon A  B = {(x,y) | x  A, y  B} osajoukko on.
3. Funktioista 3.1. Kuvaus ja funktio
RSA – Julkisen avaimen salakirjoitusmenetelmä Perusteet, algoritmit, hyökkäykset Matti K. Sinisalo, FL.
Elinkeinopoliittinen mittaristo 2014
XPath © Reino Aarinen, Mikä on XPath? XPath on W3C:n ylläpitämä yleinen standardikieli tiedon hakemiseen XML dokumenteista selaamalla sen elementtejä.
Harrastajatutkinto Säännöt Pisteytys 30 kuvaa 45 sekuntia / kuva
UMF I Luento 2. Aika Luennot, Klo 14–16 to 4.9 – ke 10.9 ke 24.9 – ke 1.10 ke – pe Demot, Klo 10–12/12–14/14–16 Pe 12.9, Ti 16.9, Pe 19.9.
Funktion esittely eli prototyyppi tMyn1 Funktion esittely eli prototyyppi Funktion esittely (function declaration) kertoo funktion nimen, parametrien tyypit.
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Säännöt 30 kuvaa 45 sekuntia / kuva 15 sekuntia kirjoitusaikaa Vastaus suomeksi, ruotsiksi, englanniksi, tieteellisellä nimellä tai sen 3+3 lyhenteellä.
KUVAKÄSIKIRJOITUS Leenan ja Leevin lumiukot Veera Tervo, Laura Päärni VAKA 12C.
1. Joukko-oppi Merkinnät
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Miksi osittaa ohjelmatMyn1 Miksi osittaa ohjelma C++ -kielessä funktiot voivat olla itsenäisiä tai luokkaan liittyviä funktioita. Funktio on ohjelma, jolla.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
3.1. DERIVAATAN MÄÄRITELMÄ
22. Taulukot.
@ Leena Lahtinen TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA:  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ.
XPath Teppo Räisänen Liiketalouden yksikkö.
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
7. Määritä sellaisen ympyräsektorin keskuskulma, jonka pinta-ala on 1 ja piiri mahdollisimman lyhyt. Anna tulos 0,1 asteen tarkkuudella. Keskuskulma =
S ysteemianalyysin Laboratorio Teknillinen korkeakoulu Esitelmä 2 - Jirka Poropudas Optimointiopin seminaari - Kevät 2005 / 1 Bayes-verkoista s
Ohjelmointi työtä n. 16 h/vko onnistumista työtä n. 16 h/vko onnistumista #include int main(void) { std::cout
Java - Tietokanta. JDBC=Java database connectivity  ODBC:n kaltainen ohjelmointiliittymä SQL- tietokantoihin  Koostuu Java-kehitysympäristön (esim.
Laskulaatikoissa on eläimiä piilossa. Osa eläimistä lähtee pois laatikosta. Laske, kuinka monta eläintä jää laatikkoon. Näpäytä oikeaa vastausta. Tehtävä.
S ysteemianalyysin Laboratorio Teknillinen korkeakoulu Esitelmä 23 – Juho Kokkala Optimointiopin seminaari - Syksy 2005 / 1 IEJ-puut, yhteisjakaumat, A-kyllästetyt.
Keskusmuistitietokantahakemistot Vilho Raatikka Solid Information Technology Tietokannat NYT! Helsinki,
Logiikkakielen upottaminen olio- ohjelmaan Pietu Pohjalainen.
Listat eli luettelot listaelementit ovat lohkoelementtejä:  lista ja listan alkiot alkavat uudelta riviltä  listan jälkeen tuleva elementti alkaa uudelta.
Foreach-toistolausetMyn1 foreach-toistolause foreach-rakenteella on kätevä käydä läpi kaikki taulukon alkiot. Erityisen kätevää se on hajautustaulukon.
FOR i := 0...N-1 DO summa := summa + A[i] tulo := tulo * A[i] ENDFOR.
Lajittelu: peruskäsitteet
Ohjausrakenteet Määräävät ohjelmakoodin suoritusjärjestyksen Ehtolause if – else on muotoa if (lauseke) lause1 else lause2 Jos lauseke on tosi, niin suoritetaan.
Prioriteettijonot ja kekolajittelu (heapsort)
Kuplalajittelu (bubble sort)
Puun määritelmä Puu on yhden tai useamman kytketyn solmun muodostama hierarkinen joukko Lehtisolmuista juurisolmuun on yksikäsitteinen polku Käytetään.
Jakolajittelu (Radix sort) Vertailu tehdään avaimen osien perusteella Avaimia käsitellään R-kantaisina arvoina esim. postin lajittelukone prosessoi lähetykset.
Lajittelun sovelluksia Yksilöllisyyden testaaminen Kopioiden poistaminen Mediaani/n:ksi suurimman valinta frekvenssien laskenta/yleisin alkio, l.moodi.
Hajoita ja hallitse (divide and conquer) Pikalajittele n-alkioinen taulukko 1. Divide: Jaetaan taulukko kahdeksi alitaulukoksi tukialkion (pivot) x suhteen:
Hajakoodaus Talletetaan alkiot avain-indeksoituun taulukkoon Hajakoodausfunktio Menetelmä avain-indeksin laskemiseen avaimesta Törmäyksen selvitysstrategia.
Linkitetty lista Joukko alkioita jotka on kytketty toisiinsa linkeillä Listan alkio sisältää talletettavan datan ja linkin seuraavan alkioon Alkion lisääminen.
Symbolitaulut Joukko hakuavaimen omaavia tietueita LISÄÄ uusi tietue ETSI tietue hakuavaimen perusteella Sovelluksia: Spell checker etsii sanoja sanakirjasta.
Funktion ominaisuuksia
4. Komentoriviparametrit
7. Hyvä ohjelmointitapa..
Siirtorekisterin toteutus Javalla
TIEA341 Funktio-ohjelmointi 1 Syksy 2005
toista 12 kertaa käännä kortti lähetä käännetty
3. Komentoriviparametrit
Esityksen transkriptio:

Binäärinen hakupuu Jokaisessa solmussa on yksikäsitteinen avain vasemmat jälkeläiset < nykyinen solmu < oikeat jälkeläiset 9 6 11 5 7 10

Binäärisen hakupuun läpikäynti sisäjärjestyksessä (inorder) Järjestys: vasen alipuu - juuri - oikea alipuu 5 6 7 9 10 11 9 6 11 void sisajarjestys(puuos alkio){ if(alkio){ sisajarjestys(alkio->vasen); tulosta_alkio(alkio); sisajarjestys(alkio->oikea); } 5 7 10

Maksimi- 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

Keon toteutus Juuri = 1 i:n vasen lapsi = 2*i i:n oikea lapsi = 2*i+1 i:n vanhempi = i/2 x[1] x[2] X[3] x[4] x[5] X[6]

Keko – nosta (siftup) funktio 12 20 15 29 23 17 22 35 40 26 51 19 13

Keko – nosta (siftup) funktio 12 20 15 29 23 13 22 35 40 26 51 19 17

Keko – nosta (siftup) funktio 12 20 13 29 23 15 22 35 40 26 51 19 17

Keko – nosta (siftup) funktio 12 20 13 29 23 15 22 35 40 26 51 19 17

Keko – poista juuresta 12 20 13 29 23 15 22 35 40 26 51 19 17

Keko – poista juuresta 20 13 29 23 15 22 35 40 26 51 19 17

Keko – siftdown 17 20 13 29 23 15 22 35 40 26 51 19

Keko – siftdown 13 20 17 29 23 15 22 35 40 26 51 19

Keko – siftdown 13 20 15 29 23 17 22 35 40 26 51 19

Keko – siftdown 13 20 15 29 23 17 22 35 40 26 51 19

Lapsi vasemmalle, sisarukset oikealle

Joukot Joukot voidaan esittää metsien avulla Metsä on ei-tyhjä joukko erillisiä puita

Joukot int etsi_joukko(int alkio) { for(; vanhempi[alkio] >= 0; alkio = vanhempi[alkio]) { ; /* tyhjä lause */ } return alkio; } void unioni(int alkio1, int alkio2) { vanhempi[alkio1] = alkio2; /* sijoit. joukko toisen alipuuksi */ }