メインコンテンツへ
アルゴリズムとプログラミングアルゴリズムとデータ構造

二分探索木(Binary Search Tree)に対して中順走査(in-order traversal)を行ったとき、ノードの値が取り出される順序はどれか。

ア.値が昇順(小さい順)に取り出される正解
イ.値が降順(大きい順)に取り出される
ウ.ルートから近い順(幅優先順)に取り出される
エ.ノードが挿入された順番に取り出される

解説

二分探索木は「左の子 < 自分 < 右の子」という大小関係を全ノードで守っている構造です。「左→自分→右」の順に訪れる中順走査は、そのルールに沿って最小値から順番に拾っていくので、必ず昇順になります。

なぜ ア が正解か

中順走査は「左サブツリー全体 → 自分 → 右サブツリー全体」を再帰的に繰り返します。二分探索木の定義上、左サブツリーの値はすべて自分より小さく、右サブツリーはすべて大きい。この構造を持つ木に対して中順走査を行うと、最小値から最大値へと順番にノードを拾うことになるため、結果として昇順の列が得られます。

なぜ イ は間違いか

降順になるのは「右→自分→左」の逆中順走査(reverse in-order)です。中順の訪問方向を反転させるだけで降順が得られる——これは知っておくと便利な性質です。中順と逆中順を混同しやすいので注意しましょう。

なぜ ウ は間違いか

ルートから近い順(レベル順)に取り出すのは幅優先探索(BFS)です。BFSはキューを使って同じ深さのノードをまとめて処理するため、木の形によっては値がバラバラな順で出てきます。走査方式(深さ優先か幅優先か)と出力順序の混同が起きやすいポイントです。

なぜ エ は間違いか

挿入順の保持は二分探索木の仕組みにはありません。同じキーでも挿入順序によって木の形が変わるほどで、挿入履歴を復元する手がかりは残りません。挿入順を保ちつつ高速な探索も欲しい場合は、LinkedHashMapのようなデータ構造を別途選ぶ必要があります。

出典: AI生成問題(学習用)