Binääripuu on hierarkkinen tietorakenne , jossa kullakin solmulla on enintään kaksi jälkeläistä (lapsta). Tyypillisesti ensimmäistä solmua kutsutaan pääsolmuksi, ja lapsia kutsutaan vasemmaksi ja oikeaksi lapsiksi. Binääripuu on järjestetty suunnattu puu [1] .
Käytännön syistä käytetään yleisesti kahta binääripuiden alatyyppiä - binäärihakupuuta ja binaarikasaa .
Binääripuulle on olemassa seuraava rekursiivinen määritelmä (katso BNF ):
<binääripuu> ::= ( <data> <binääripuu> <binääripuu> ) | tyhjä .Toisin sanoen binääripuu on joko tyhjä tai koostuu tiedosta ja kahdesta alipuusta (joista jokainen voi olla tyhjä). Ilmeinen mutta tärkeä tosiasia on ymmärtää, että jokainen osapuu on puolestaan myös puu. Jos solmussa on molemmat tyhjät alipuut, sitä kutsutaan lehtisolmuksi (leaf vertex) tai lehtisolmuksi (pääte) [2] .
Esimerkiksi kuvassa oikealla näkyvä. 1 puu tämän kieliopin mukaan voitaisiin kirjoittaa näin:
(m (e (c (nolla nolla) tyhjä ) (g tyhjä (k null tyhjä) ) ) (s (p (o null null) (s null null) ) (y tyhjä) ) ) |
Jokainen puun solmu määrittelee alipuun , jonka juuri se on. Solmussa m = (data, vasen, oikea) on kaksi lasta (vasen ja oikea) vasemmalla ja oikealla ja vastaavasti kaksi alipuuta (vasen ja oikea), joiden juuret ovat vasemmalla ja oikealla [3] .
Monet hyödylliset tietorakenteet perustuvat binääripuuhun:
Puu (tietorakenne) | |
---|---|
Binääripuut | |
Itsetasapainottavat binaaripuut |
|
B-puut | |
etuliite puita |
|
Avaruuden binaarinen osiointi | |
Ei-binääripuut |
|
Avaruuden hajottaminen |
|
Muut puut |
|
Algoritmit |