データ構造について
言語の説明に入る前に、まず 木 、特に 二分木 と呼ばれるデータ構造について説明します。
木構造
以下の図を見てください。
このマルのひとつひとつを、 節(node)といいます。節同士は、 枝(edge)でつながっています。
ひとつの節から下に向けて、いくつかの節がつながっています。この上側の節を 親(parent)、下側の節を 子(child)といいます。
一番上の節を 根(root)、末端のそれぞれの節を 葉(leaf)といいます。
このように、ひとつの節(根)からいくつかの子、さらにそれらの子、……とつながっていく構造を 木(tree)といいます。(上下逆に見ると木に見えることから)
二分木
二分木(binary tree)は、木の中でも、「ひとつの節は子を2つまでしか持てない」という制約のあるものです。
今回は子の左右が重要なので、左側に生えている子を「左の子」、右側に生えている子を「右の子」、と呼ぶことにします。
再帰的構造
木は再帰的な構造を持ちます。
まず、節がただひとつのみある場合でも、木です。
さらに、ある節の左側や右側、あるいは両方に木を子としてつければ、それもまた木になります。
こうして再帰的に木を定義することができます。この性質は木を調べるときにも役立ちます。
その他の用語
根から一番遠い葉までの枝の数を 高さ(height)といいます。