木構造とは
木構造(Tree Structure)とは、データ同士のつながりを親子関係(階層的)で表現したデータ構造です。樹木を逆さまにしたような形で表され、最上位にある一番大元の要素を「根(ルーツ)」、そこから枝分かれした途中の要素を「節(ノード)」、枝の最下端にある要素を「葉(リーフ)」と呼びます。上から下へ一方通行の親子関係があるのが特徴です。
具体例
パソコンのフォルダ(ディレクトリ)管理がもっとも身近な例です。ハードディスク(Cドライブなど)が「根」となり、その中に複数のフォルダ(節)があり、各フォルダの中に具体的なファイル(葉)が配置されています。
根 (Root): Cドライブ
└── 節: Documents
├── 葉: diary.txt
└── 葉: todo.xlsx
└── 節: Photos
└── 葉: image.pngもう少し詳しく
木構造(ツリー構造:Tree Structure)は、データ同士を階層的な親子関係でつないだ非線形のデータ構造です。全体が枝分かれした樹木のような形状をしており、ネットワーク構造とは異なり「循環(ループ)」を持たないのが定義上の特徴です。構成要素である「ノード(節)」のうち、最上位にある唯一の親を持たないノードを「根(ルート:Root)」、親と子の両方を持つ中間的なノードを「節(内部ノード)」、最下位にあり子を持たないノードを「葉(外部ノード/リーフ:Leaf)」と呼びます。また、ノード間のつながりを「枝(エッジ)」と呼びます。木構造は、組織図、ファイルシステム、XML/HTMLのドキュメント木(DOM構造)など、現実世界の階層関係を表現するのに最適なだけでなく、データの検索やソートを高速に行うための様々な派生データ構造(二分探索木、B木など)の土台として、データベースやファイル管理システムの内部で極めて重要な役割を果たしています。
試験でのポイント
試験では、木構造に関する基本用語(根、節、葉、子の数を示す次数、根からの深さや高さ)の定義を問う知識問題が出題されます。また、木構造の各ノードを巡回(走査)する順序として、親ノードをどのタイミングで処理するかに応じた「先行順(前順/行きがけ順)」「中間順(通りがけ順)」「後行順(後順/帰りがけ順)」という3つの巡回アルリズムとその走査結果を問う問題が頻出となっており、図解から手順をトレースできるようにしておく必要があります。
関連する用語
根(ルート、木構造の出発点となるノード)、葉(リーフ、末端のノード)、走査(ツリー全体のノードを特定の順序で巡る処理)。