二分木に新しいノードを付け加える手続きを作成せよ。 具体的には、xを要素とし、左の子を木l、右の子を木rとする 二分木のノードを返す関数node(x,l,r)を作成し、教科書P.43 図2.30の二分木を構成せよ。 ※ 要素の型は「文字型(char)」とする。 二分木のノードの中身を出力する方法のひとつに木のなぞりというものがある。 これは、来週の「アルゴリズム基礎論」の講義で学習する。 よって、今回の課題内容は二分木の構成までとし、 二分木に格納されたデータは次回の課題にて確認することとなる。
入力は必要ない。 例えば、図1のような二分木を作成する場合は、以下のようにすればよい。![]()
var head : tree{二分木のデータ型} function node(x:char; l,r:tree):tree; begin {nodeの中身を書く} end; begin head := node('a',node('b',nil,nil),node('c',nil,nil)); end. |
---|
出力は必要ない。始めに述べたように、二分木に格納されたデータの確認は次回の課題で行う。 今回は、関数node(x,l,r)を用いて指定した二分木を構成すればよい。
今回は出力が無いので、プログラムを実行しても何も表示されない。 コンパイルだけ行い、エラーがでないことを確認しなさい。 今回の課題は、二分木のデータ型を定義し、新しいノードを作成する関数を作成するだけなので、 人によってはかなり早く完成してしまうかもしれない。 余力があり、今回のプログラムが正しく動作しているかを確認したい学生は、 教科書P.41の木のなぞりを予習し、前順,中順,後順の手続きを作成してみるといい。
教科書を忘れた学生用に、作成するべき二分木を以下にあげる。![]()