1 / 22

2.8.3.4 Binääripuut

2.8.3.4 Binääripuut. Kaksihaaraista puuta sanotaan binääripuuksi: solmulla on 0, 1 tai 2 seuraajaa vasemman puolen seuraajista muodostuu vasen alipuu (vasen poikapuu) ja oikean puolen seuraajista muodostuu oikea alipuu (oikea poikapuu) huom: lista on 1-haarainen puu eli unaaripuu !.

dash
Download Presentation

2.8.3.4 Binääripuut

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2.8.3.4 Binääripuut Kaksihaaraista puuta sanotaan binääripuuksi: • solmulla on 0, 1 tai 2 seuraajaa • vasemman puolen seuraajista muodostuu vasen alipuu (vasen poikapuu) ja • oikean puolen seuraajista muodostuu oikea alipuu (oikea poikapuu) • huom: lista on 1-haarainen puu eli unaaripuu !

  2. Binääripuu … Puun läpikäyntijärjestykset (vasen alipuu ennen oikeaa alipuuta): • esijärjestys (preorder tree walk): solmussa käydään aina ennen solmun alipuita • välijärjestys (inorder): solmussa käydään aina alipuiden välissä • jälkijärjestys (postorder): solmusssa käydään aina alipuiden jälkeen.

  3. Binääripuu … Binääripuuoperaatioita: • puun tyhjyyden testaus (puu p = tyhjä tai p  tyhjä) • p.oikea tarkoittaa oikeaa alipuuta • p.vasen tarkoittaa vasenta alipuuta • puun alkioiden käsittelyt (lisäys, poisto, onko alkio puussa jne.).

  4. Binääripuu … Esimerkki: puun alkioiden tulostus välijärjestyksessä: MODULE välijärjestys (p) IF p  tyhjä THEN välijärjestys (p.vasen) tulosta (p.arvo) välijärjestys (p.vasen) ENDIF ENDMODULE Välijärjestys on yleisin läpikäyntijärjestys.

  5. Binääripuu … Määritelmä: Puu p on järjestetty binääripuu, jos: • p on tyhjä tai • p on ei-tyhjä ja seuraavat ehdot ovat voimassa • p:n juuren arvo > p:n vasemman alipuun jokaisen solmun arvo • p:n juuren arvo < p:n oikean alipuun jokaisen solmun arvo • p:n vasen ja oikea alipuu ovat järjestettyjä binääripuita.

  6. Esimerkki: järjestettyjä binääripuita: Välijärjestys tuottaa järjestetyt listat: 12, 18, 24,30, 36, 42 ja Bertta, Fredi Jaana, Jussi, Kati, Mari, Sami

  7. Binääripuu … Järjestettyä binääripuuta sanotaan usein myös binääriseksi hakupuuksi, koska puusta löydetään haluttu tieto nopeasti. Seuraavassa esimerkissä binääripuuta käytetään hyväksi lajittelussa. Tämä perustuu siihen, että välijärjestysläpikäynti tuottaa järjestetyn listan.

  8. Esimerkki: Järjestetyn binääripuun käyttö listan järjestämisessä järjestämätön lista  järjestetty binääripuu  järjestetty lista MODULE lajittele (lista l) ListaPuuksi (l, p) PuuListaksi (p, l) ENDMODULE Parametri l viittaa listan alkuun.

  9. Esimerkki: Järjestetyn binääripuun käyttö listan järjestämisessä järjestämätön lista  järjestetty binääripuu  järjestetty lista MODULE ListaPuuksi (l, p) p:= tyhjä puu WHILE l  tyhjä DO LisääPuuhun(l.arvo, p) l:=l.seuraava ENDWHILE ENDMODULE (* ListaPuuksi muodostaa järjestetyn binääripuun *)

  10. Esimerkki: Järjestetyn binääripuun käyttö listan järjestämisessä MODULE LisääPuuhun (alkio a, p) IF p=tyhjä THEN p.arvo:=a p.vasen:=tyhjä p.oikea:=tyhjä ELSE IF a < p.arvo THEN LisääPuuhun(a, p.vasen) ELSE LisääPuuhun(a, p.oikea) ENDIF ENDIF ENDMODULE (* LisääPuuhun vie yhden alkion järjestettyyn binääripuuhun *)

  11. Esimerkki: Järjestetyn binääripuun käyttö listan järjestämisessä MODULE PuuListaksi (p, l) IF p  tyhjä THEN PuuListaksi (p.vasen, l) Lisää juuren arvo listan l loppuun PuuListaksi (p.oikea, l) ENDIF ENDMODULE

  12. 2.8.3.5 Binääripuun toteutus Kaksi päätoteutustapaa: • linkitetty rakenne • sulkumerkki- eli termiesitys • listana tallentaminen Toteutustapa riippuu mm. käytettävän ohjelmointikielen tarjoamista keinoista.

  13. 2.8.3.5 Binääripuun toteutus … • Linkitetty rakenne Jokaiseen solmuun talletetaan tietokenttien arvojen (tai arvon) lisäksi osoittimet vasempaan ja oikeaan alipuuhun. Toteutustapa riippuu mm. käytettävän ohjelmointikielen tarjoamista keinoista.

  14. Sulkumerkki- eli termiesitys Seuraajat kirjoitetaan sulkeisiin juuren jälkeen. esim. 18 (12, 36). Tyhjälle puulle käytetään sovittua symbolia, esim. . Lehtien tyhjiä seuraajia ei merkitä. Perustuu esijärjestykseen. Esimerkiksi Jussi(Fredi(Bertta, Jaana), Kati (, Sami(Mari, )))

  15. Listaesitys, esimerkiksi vektorissa: • Puun juuri on listarakenteen 1. alkio. • Paikassa i sijaitsevan solmun vasen seuraaja sijaitsee paikassa 2i ja oikea seuraaja paikassa 2i+1. • implisiittinen tietorakenne – sisäänrakennettu sääntö Esim. [ Jussi, Fredi, Kati, Bertta, Jaana, _, Sami, _,_,_,_,_,_Mari,_] • Keko • solmun arvo on suurempi kuin poikasolmujen arvot • poikasolmujen välillä ei määrättyä järjestystä • listaesityksessä V[i]>V[2i] ja V[i]>V[2i+1] • maksimin haku on triviaali tehtävä – löytyy puun juuresta

  16. 2.8.3.6 Graafi • kärjet (solmut) ja niitä yhdistävät kaaret • puurakenteen yleistys • ei hierarkiaa kuten puissa • solmun aste = niiden kaarien lukumäärä, jotka lähtevät tästä solmusta muihin solmuihin

  17. Graafin esitysmuodot graafinen kartta bittikartta  (huom. tässä ei etäisyyksiä) Kuopio-solmun aste = 3

  18. Graafinen kartta vs. taulukko kaupunkien väliset etäisyydet

  19. 2.8.3.7 Graafin toteutus • Linkitetyt rakenteet • kustakin solmusta linkit kaikkiin niihin solmuihin, joihin tästä solmusta on kaari • miten tallennetaan linkit? • tietueen kenttinä – täytyy asettaa yläraja • miten muuten? (pohdinta) • Bittikarttaesitykset: • ykkösen sijalla voi olla kaaren paino, esim. välimatka • tiedot kahteen kertaan taulukossa!

  20. Tyypillisimpiä graafeja • Suuntamaton graafi • kaksisuuntaiset kaaret • maantiekartta • Suunnattu graafi • kaupungin katuverkko yksisuuntaisine katuineen • Puijonkatu • 2-suuntaiset kadut kahtena kaarena • Painotettu graafi • kaaret varustetaan lukuarvoilla • useampi kuin yksi kaari 2 solmun välillä • kaistojen lkm, etäisyys kaupunkien välillä • Suunnattu syklitön graafi

  21. Suunnattu syklitön graafi • Directed Acyclic Graph, DAG • Sykli = kaarien muodostama polku, joka päättyy samaan solmuun mistä se alkaa • symmetriset suhteet kaksisuuntaisilla kaareilla aiheuttavat syklejä • epäsymmetriset suhteet yksisuuntaisilla kaareilla eivät • Esim. perhejäsenten suhteet DAG:na • puurakenne ei riitä, koska lapsella on 2 vanhempaa (edeltäjää) • vanhempien välillä suhteet mies/vaimo • vanhempi/lapsi epäsymmetrinen suhde • sisarus-suhde luo syklejä – ratkaisu esikoinen/pikkusisarus -relaatiot

More Related