アルゴリズムとプログラミング
基本情報技術者試験|空の 2 分探索木に対し、次の擬似言語の挿入規則に従って 400, 200, 600, 100, 300,…
空の 2 分探索木に対し、次の擬似言語の挿入規則に従って 400, 200, 600, 100, 300, 500 をこの順に挿入した。挿入後の木において、根の右の子がさらにもつ左の子(根→右→左とたどったノード)の値はどれか。挿入規則は「値が現ノードより小さければ左、大きければ右へ進み、空の位置に達したらそこに挿入する」である。
○手続: insert(ノード: root, 整数型: v)
ノード: cur ← root
while (true)
if (v < cur.値)
if (cur.左 が 空)
cur.左 ← 新ノード(v); return
endif
cur ← cur.左
else
if (cur.右 が 空)
cur.右 ← 新ノード(v); return
endif
cur ← cur.右
endif
endwhileイ500
ア60
ウ右の子の左で500
エ100
正解
イ.500
400 が根、600 が根の右の子になる。500 は 500>400 で右へ、500<600 で左へ進み 600 の左の子となるため、根→右→左の値は 500 であり イが正しい。
?選択肢ごとの解説
イ ○400 が根、600 が根の右の子になる。500 は 500>400 で右へ、500<600 で左へ進み 600 の左の子となるため、根→右→左の値は 500 であり イが正しい。
ア ×根の右の子 600 自体を答えるつもりで桁を取り違え 60 とした、もう 1 段左へたどる指示の見落としと桁の誤りである。
ウ ×値だけでなく経路の説明を冗長に書いた『右の子の左で500』とした、簡潔な値の解答形式から外れた誤りである。
エ ×最小値 100(根→左→左)を答えた、たどる経路を左寄りに誤った誤りである。
アルゴリズムとプログラミングの他の問題
次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=500、500 の左の子=300、500…次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=500、500 の左の子=300、500…次の 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…
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。
基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。
登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。
作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0113
