Viikon 5 aiheena on luentomateriaalin sivut 154–197.
Binääripuu on puurakenne, jossa jokaiseen solmuun voi liittyy vasen ja oikea alipuu.
Tässä on esimerkki binääripuusta:
7 / \ 4 2 / / \ 6 7 5 / \ 1 4
Binääripuu on binäärihakupuu, jos jokaisessa solmussa kaikki vasemman alipuun solmut ovat pienempiä ja kaikki oikean alipuun solmut ovat suurempia.
Tässä on esimerkki binäärihakupuusta:
4 / \ 2 6 / / \ 1 5 9 / \ 7 10
Binäärihakupuun hyötynä on, että siitä voi etsiä solmua huipulta aloittaen valitsemalla aina sen alipuun, jossa solmun tulisi olla.
Javassa binääripuun voi toteuttaa seuraavasti:
public class Puu { int arvo; Puu vasen; Puu oikea; public Puu(int arvo, Puu vasen, Puu oikea) { this.arvo = arvo; this.vasen = vasen; this.oikea = oikea; } }
Kenttä arvo
sisältää solmussa olevan luvun,
ja kentät vasen
ja oikea
viittaavat vasempaan ja oikeaan alipuuhun.
Esimerkiksi binääripuun
4 / \ 1 7 / \ 2 5
voi nyt määritellä näin:
Puu x = new Puu(4, new Puu(1, null, null), new Puu(7, new Puu(2, null, null), new Puu(5, null, null)));