アルゴリズムとプログラミング
基本情報技術者試験|次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。 根=500、500…
次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=500、500 の左の子=300、500 の右の子=800、300 の左の子=200、300 の右の子=400、800 の右の子=900(800 の左の子は空、200・400・900 の子はすべて空)。
この木に対し次の擬似言語(中順走査:左部分木→節点→右部分木の順に値を出力)を根から実行したとき、出力される値の並びはどれか。
○手続: inorder(ノード: n)
if (n が 空)
return
endif
inorder(n.左)
nの値を出力
inorder(n.右)ア200 300 400 500 800 900
ウ200 300 400 300 500 800 900
イ200 400 300 900 800 500
エ昇順の200から900
正解
ア.200 300 400 500 800 900
中順では左部分木をすべて出力してから節点、最後に右部分木を出力する。この木は左<節点<右の関係を満たすため出力は昇順 200 300 400 500 800 900 となり アが正しい。
?選択肢ごとの解説
ア ○中順では左部分木をすべて出力してから節点、最後に右部分木を出力する。この木は左<節点<右の関係を満たすため出力は昇順 200 300 400 500 800 900 となり アが正しい。
ウ ×節点 300 を左部分木の前後で 2 回出力して 200 300 400 300 500 800 900…
イ ×後順走査(左→右→節点)の結果 200 400 300 900 800 500 であり、節点を最後に出力した誤りである。
エ ×昇順になること自体は正しいが具体的な並びを示さず『昇順の200から900』と言葉で濁した、出力列を明示していない不適切な解答である。
アルゴリズムとプログラミングの他の問題
次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=500、500 の左の子=300、500…次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=A、A の左の子=B、A…次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=A、A の左の子=B、A…次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=500、500 の左の子=300、500…2 分探索木に 500, 250, 750, 100, 400, 600, 900…空の 2 分探索木に対して、50, 30, 70, 20, 60 の順に値を挿入した。次の擬似言語に従ってさらに値 65…空の 2 分探索木に対し、次の擬似言語の挿入規則に従って 400, 200, 600, 100, 300, 500…次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=500、500 の左の子=300、500…
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。
基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。
登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。
作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0115
