情報処理安全確保支援士試験 情報処理安全確保支援士試験 令和6年度春期 午前Ⅰ3: 各ノードがもつデータを出力する再帰処理 f(ノード n)を定義した。この処理を,図の2分木の根(最上位のノード)から始めたときの出力はどれか。 〔f(ノードn)

情報処理安全確保支援士試験 令和6年度春期 午前Ⅰ
Q 33 / 30
各ノードがもつデータを出力する再帰処理 f(ノード n)を定義した。この処理を,図の2分木の根(最上位のノード)から始めたときの出力はどれか。 〔f(ノードn)の定義〕 1.ノードnの右に子ノードrがあれば,f(ノードr)を実行 2.ノードnの左に子ノードlがあれば,f(ノードl)を実行 3.再帰処理f(ノードr),f(ノードl)を未実行の子ノード,又は子ノードがなければ,ノード自身がもつデータを出力 4.終了
根が+,左の子がA,右の子が÷。÷の左の子が×(子はB,C),右の子が−(子はD,E)の2分木

問題本文

各ノードがもつデータを出力する再帰処理 f(ノード n)を定義した。この処理を,図の2分木の根(最上位のノード)から始めたときの出力はどれか。 〔f(ノードn)の定義〕 1.ノードnの右に子ノードrがあれば,f(ノードr)を実行 2.ノードnの左に子ノードlがあれば,f(ノードl)を実行 3.再帰処理f(ノードr),f(ノードl)を未実行の子ノード,又は子ノードがなければ,ノード自身がもつデータを出力 4.終了

選択肢

  • .+÷−ED×CBA
  • .ABC×DE−÷+
  • .E−D÷C×B+A
  • .ED−CB×÷A+

正解

. ED−CB×÷A+

解説

この再帰処理は、右の子→左の子を先に処理し、子をすべて処理し終えてから自ノードを出力する。すなわち左右を逆順に巡る後行順(帰りがけ順)で、結果は逆ポーランド記法に近い形になる。図の木に適用すると、×の部分木からED−、CB×、それを÷でまとめ、最後にAと+で結合し、ED−CB×÷A+となりエが正解。木の走査順序の理解が問われる。

選択肢ごとの解説

  • .演算子が先頭に来る前置記法に近い並びで、自ノードを最後に出力する定義と一致せず誤り。
  • .左の子を先に処理した場合の並びで、右の子を先に処理する定義に反し誤り。
  • .中置記法に近い順で、子をすべて処理してから出力する後行順と一致せず誤り。
  • .右→左→自ノードの順で巡った後行順の出力で、定義どおりであり正解。

情報処理安全確保支援士試験 令和6年度春期 午前Ⅰ過去問一覧へ戻る・問3