アルゴリズムとプログラミング

基本情報技術者試験次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。 根=A、A の左の子=B、A…

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。 根=A、A の左の子=B、A の右の子=C、B の左の子=D、C の左の子=E、C の右の子=F、E の左の子=G(D・F・G の子はすべて空、B の右の子は空、E の右の子は空)。 次の擬似言語は、葉(左の子も右の子も空である節点)の個数を返す。この木の根 A に対して実行したとき、戻り値はどれか。
○整数型: countLeaf(ノード: n)
  if (n が 空)
    return 0
  endif
  if (n.左 が 空 かつ n.右 が 空)
    return 1
  endif
  return countLeaf(n.左) + countLeaf(n.右)
3(葉)
4個
7(全ノード)
2個
正解
ア.3(葉)

countLeaf は子が両方空なら 1 を返し、そうでなければ左右の葉数を合計する。葉は D, F, G の 3 個であり戻り値は 3 となるため アが正しい。

?選択肢ごとの解説

ア ○countLeaf は子が両方空なら 1 を返し、そうでなければ左右の葉数を合計する。葉は D, F, G の 3 個であり戻り値は 3 となるため アが正しい。
ウ ×E を葉に数え入れて 4 個とした誤りで、E は左の子 G をもつため葉ではない。
イ ×全ノード数 7 を葉数と取り違えた、内部節点も数え入れた誤りである。
エ ×D と F だけを葉と数えて G を見落とし 2 個とした、最深部の葉の数え漏れである。
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。

基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。

登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。

作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0118

【基本情報技術者試験】次の 2…|正解「3(葉)」|ukamiru 過去問