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

基本情報技術者試験空の 2 分探索木に対して、50, 30, 70, 20, 60…

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:hard
空の 2 分探索木に対して、50, 30, 70, 20, 60 の順に値を挿入した。次の擬似言語に従ってさらに値 65 を挿入したとき、65 を子としてもつ親ノードの値はどれか。挿入規則は「値が現ノードより小さければ左、大きければ右へ進み、進んだ先が空ならそこに挿入する」である。
○手続: 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
50
70
30
60
正解
エ.60

挿入経路は 50→(65>50 で右)70→(65<70 で左)60→(65>60 で右、空)となる。最後に止まった 60 の右に挿入されるため親は 60 であり エが正しい。

?選択肢ごとの解説

ア ×根 50 でいきなり挿入されると誤認したもので、50 の右はすでに 70 が存在するため空ではない。
イ ×70 の左がすでに 60 で埋まっていることを見落とし、70 を親とした誤りである。
ウ ×65>50 で右へ進むべきところを左(30 側)へ進んだ、比較の向きを取り違えた誤りである。
エ ○挿入経路は 50→(65>50 で右)70→(65<70 で左)60→(65>60 で右、空)となる。最後に止まった 60 の右に挿入されるため親は 60 であり エが正しい。
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。

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

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

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

【基本情報技術者試験】空の 2 分探索木に対して、50, 30, 70, 20,…|正解「60」|ukamiru 過去問