チャレンジ課題 C2 木構造の探索

問題

名前付きノードからなる木構造を表すクラスTreeを作り、以下の木構造を再現せよ。

また、この木を深さ優先探索(DFS: depth first search)、幅優先探索(BFS: breadth first search)で探索し、見つかった順に画面にノード名を表示するプログラムを書け。

深さ優先探索の結果

A B C D E F G H

幅優先探索の結果

A B G C E F H D

ヒント

木構造は、2分木を使うと簡単に表現できる。また、DFS, BFSも再帰を使うと綺麗に書ける。

2分木

2分木とは、各ノードは高々2つの子ノードしか持たないデータ構造である。

一般の木構造

2分木の構造は、一般の木構造(任意の数の子ノードを持つ)を表現するのにも使える。2分木のノードの左の子をfirstChild, 右の子をnextSiblingと考えると、一般の木は2分木で以下の図のように表現できる。