(cache) アルゴリズム基礎論演習2009

課題8 「二分木」


内容

  二分木に新しいノードを付け加える手続きを作成せよ。
  具体的には、xを要素とし、左の子を木l、右の子を木rとする
  二分木のノードを返す関数node(x,l,r)を作成し、教科書P.43 図2.30の二分木を構成せよ。

  ※ 要素の型は「文字型(char)」とする。

  二分木のノードの中身を出力する方法のひとつに木のなぞりというものがある。
  これは、来週の「アルゴリズム基礎論」の講義で学習する。
  よって、今回の課題内容は二分木の構成までとし、
  二分木に格納されたデータは次回の課題にて確認することとなる。

入力

  入力は必要ない。
  例えば、図1のような二分木を作成する場合は、以下のようにすればよい。
  図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.
  ※ 2009/12/14 [a][b][c] を ['a']['b']['c'] に修正。   ※ 提出された課題で、誤表記による間違いと思われるものは減点しません。   ※ 次回の課題にて今回作成した二分木を使用するので、その際に修正してください。

出力

  出力は必要ない。始めに述べたように、二分木に格納されたデータの確認は次回の課題で行う。
  今回は、関数node(x,l,r)を用いて指定した二分木を構成すればよい。

実行

  今回は出力が無いので、プログラムを実行しても何も表示されない。
  コンパイルだけ行い、エラーがでないことを確認しなさい。

  今回の課題は、二分木のデータ型を定義し、新しいノードを作成する関数を作成するだけなので、
  人によってはかなり早く完成してしまうかもしれない。
  余力があり、今回のプログラムが正しく動作しているかを確認したい学生は、
  教科書P.41の木のなぞりを予習し、前順,中順,後順の手続きを作成してみるといい。

ヒント

教科書P.43 図2.30の二分木

  教科書を忘れた学生用に、作成するべき二分木を以下にあげる。
  教科書P.43 図2.30の二分木