━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
データ構造・アルゴリズム論 確認問題10
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
●問 (2分木の走査)

次の2分木を (1)先行順 (2)中間順 (3)後行順 の各順序で走査するとき,
それぞれの処理順を頂点の列として(例えば 1, 3, 6, 5 のように)示せ.

                1
              /  \
            2      3
           /\    /
          4  5  6

──────────────────────────────────────

●答 (2分木の走査)

(1) 先行順: 1, 2, 4, 5, 3, 6
(2) 中間順: 4, 2, 5, 1, 6, 3
(3) 後行順: 4, 5, 2, 6, 3, 1

[解説]

先行・中間・後行 の名前は,根をいつ訪れるかを表す.
先行順なら 根→左部分木→右部分木 の順,
中間順なら 左部分木→根→右部分木 の順,
後行順なら 左部分木→右部分木→根 の順に,
根の訪問と部分木の再帰的な走査をする.

2分木の枝に沿って深さ優先順に渡り歩きながら,節を訪れると捉えるなら,
先行順は行きがけ(節の左を通る時)に節を訪問し,
中間順は通りがけ(節の下を通る時)に節を訪問し,
後行順は帰りがけ(節の右を通る時)に節を訪問する.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
授業のホームページ

山田 俊行
https://www.cs.info.mie-u.ac.jp/~toshi/