アルゴリズムとプログラミング
基本情報技術者試験|次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。 根=500、500…
次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=500、500 の左の子=300、500 の右の子=800、300 の左の子=200、300 の右の子=400、800 の右の子=900(800 の左の子は空、200・400・900 の子はすべて空)。
次の擬似言語は、木に含まれる節点の総数を返す。この木の根 500 に対して実行したとき、戻り値はどれか。
○整数型: countNode(ノード: n)
if (n が 空)
return 0
endif
return 1 + countNode(n.左) + countNode(n.右)イ6(全節点)
ア3葉
ウ7(空も加算)
エ5個
正解
イ.6(全節点)
countNode は空なら 0、そうでなければ自身の 1 と左右部分木の節点数を合計する。500, 300, 800, 200, 400, 900 の 6 節点を数え上げて 6 となるため イが正しい。
?選択肢ごとの解説
イ ○countNode は空なら 0、そうでなければ自身の 1 と左右部分木の節点数を合計する。500, 300, 800, 200, 400, 900 の 6 節点を数え上げて 6 となるため イが正しい。
ア ×葉ノード(200, 400, 900)だけを数えて 3 個とした、内部節点を数え漏らした誤りである。
ウ ×存在しない節点(800 の空の左の子など)を 1 つ数え入れて 7 個とした、空を 0 と扱わなかった誤りである。
エ ×いずれかの節点を 1 つ数え落として 5 個とした、走査の取りこぼしによる誤りである。
アルゴリズムとプログラミングの他の問題
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…次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=500、500 の左の子=300、500…次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=500、500 の左の子=300、500…次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=A、A の左の子=B、A…次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=A、A の左の子=B、A…
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。
基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。
登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。
作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0119
