1.やさしい
木において、兄弟(sibling)ノードとは何ですか。
- Aあるノードとその親
- B異なる部分木の同じ深さにあるノード
- C子をもたないノード
- D同じ親をもつノード
2.やさしい
静的配列と動的配列の主な違いは何ですか。
- A静的配列は数値しか格納できない
- B動的配列は、より大きなメモリブロックに移ることで拡張できる
- C動的配列は要素を連結されたノードに格納するので、1 つずつ拡張できる
- D静的配列はインデックスによるアクセスが遅い
3.やさしい
有向グラフとは何ですか。
- A閉路をもたないグラフ
- B辺がある頂点から別の頂点への向きをもつグラフ
- C相異なるすべての頂点対が辺で結ばれているグラフ
- Dすべての辺が重みをもつグラフ
4.ふつう
2 つのスタックでキューを実装します。「in」スタックに push し、「out」スタックから pop し、「out」が空になったら「in」から補充します。1 回の操作あたりのならしコストはどれですか。
- AO(n²)
- BO(n)
- CO(1)
- DO(log n)
5.ふつう
V 個の頂点と E 本の辺をもつグラフについて、隣接リストはどれだけのメモリを使いますか。
- AO(V × E)
- BO(V²)
- CO(V + E)
- DO(E²)
6.ふつう
二分ヒープをポインタなしで配列に格納できるのはなぜですか。
- A完全二分木なので、位置が単純なインデックスの式に従うから
- Bヒープは 100 個を超える要素を含むことがないから
- C配列は自動的にキーをソート順に保つので、ポインタが不要になるから
- Dヒープのすべてのキーは等しいから
7.むずかしい
二分探索木から 2 つの子を持つノードを削除するには、通常どうしますか。
- Aその下の部分木を一から作り直し、含まれていたすべてのキーを挿入し直す
- B根と入れ替える
- C中間順の後続ノード(または先行ノード)で置き換え、そのノードを削除する
- D部分木全体を削除する
8.むずかしい
オープンアドレス法を使うハッシュテーブルで、削除に「墓標」(tombstone)マーカーがよく使われるのはなぜですか。
- A墓標がハッシュ計算を高速化するから
- B安全のため削除したキーを永久に保持する必要があり、スロットを再利用できないから
- Cスロットを空にすると、他のキーの探査列が途切れる可能性があるから
- Dテーブルがソートされた状態になるから
解答
- 1. D · 同じ親をもつノード
- 2. B · 動的配列は、より大きなメモリブロックに移ることで拡張できる
- 3. B · 辺がある頂点から別の頂点への向きをもつグラフ
- 4. C · O(1)
- 5. C · O(V + E)
- 6. A · 完全二分木なので、位置が単純なインデックスの式に従うから
- 7. C · 中間順の後続ノード(または先行ノード)で置き換え、そのノードを削除する
- 8. C · スロットを空にすると、他のキーの探査列が途切れる可能性があるから
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。