1.やさしい
配列では O(1) だが、単方向連結リストでは O(n) となる操作はどれですか。
- A先頭の要素の削除
- B先頭への挿入
- C最初の要素の読み取り
- Dインデックス i の要素へのアクセス
2.やさしい
木において、兄弟(sibling)ノードとは何ですか。
- A異なる部分木の同じ深さにあるノード
- B同じ親をもつノード
- Cあるノードとその親
- D子をもたないノード
3.やさしい
無向グラフにおいて、頂点の次数(degree)とは何ですか。
- Aその頂点につながっている辺の数
- Bグラフの頂点の数
- Cその頂点からの最長経路の長さ
- D隣接リストにおけるその位置
4.ふつう
二分探索木のあるノードが右部分木をもっています。その通りがけ順での次のノード(後続ノード)はどこにありますか。
- A右部分木の最も左のノード
- B左部分木の最も右のノード
- C常にその親
- D常にその右の子
5.ふつう
実行中のプログラムが、有効な関数呼び出しとそのローカル変数を管理するために使うデータ構造はどれですか。
- Aフレームの二分探索木
- B関数のハッシュテーブル
- Cヒープメモリのキュー
- Dコールスタック
6.ふつう
二分探索木で最小のキーはどのように見つけますか。
- A根から右の子がなくなるまで右の子をたどる
- Bすべての葉を訪問して比べる
- C根から左の子がなくなるまで左の子をたどる
- D根だけを見る
7.むずかしい
ある動的配列は満杯になるとサイズを 2 倍にします。多くの実装が、半分ではなく 4 分の 1 まで減ったときにだけ縮小するのはなぜですか。
- A配列をソートされた状態に保つため
- B境界付近で push と pop が交互に起こるときに、サイズ変更が繰り返されるのを避けるため
- C半分で半減させると要素が失われるから
- Dメモリアロケータはブロックの 4 分の 1 単位でしかメモリを解放できないから
8.むずかしい
オープンアドレス法を使うハッシュテーブルで、削除に「墓標」(tombstone)マーカーがよく使われるのはなぜですか。
- Aテーブルがソートされた状態になるから
- B墓標がハッシュ計算を高速化するから
- Cスロットを空にすると、他のキーの探査列が途切れる可能性があるから
- D安全のため削除したキーを永久に保持する必要があり、スロットを再利用できないから
解答
- 1. D · インデックス i の要素へのアクセス
- 2. B · 同じ親をもつノード
- 3. A · その頂点につながっている辺の数
- 4. A · 右部分木の最も左のノード
- 5. D · コールスタック
- 6. C · 根から左の子がなくなるまで左の子をたどる
- 7. B · 境界付近で push と pop が交互に起こるときに、サイズ変更が繰り返されるのを避けるため
- 8. C · スロットを空にすると、他のキーの探査列が途切れる可能性があるから
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。