1.やさしい
二分木を定義するものは何ですか。
- Aすべてのノードがちょうど 2 つの子をもつ
- Bすべてのノードが 2 進数を格納する
- Cすべてのノードが高々 2 つの子をもつ
- D木がちょうど 2 つのレベルをもつ
2.やさしい
木において、葉(leaf)とは何ですか。
- A子をもたないノード
- B最大の値をもつノード
- Cちょうど 1 つの子をもつノード
- D親をもたないノード
3.やさしい
二分探索木において、あるノードの左部分木にある値はどうなっていますか。
- Aそのノードの値より小さい
- Bそのノードの値と等しい
- Cランダムな順序
- Dそのノードの値より大きい
4.ふつう
二分ヒープをポインタなしで配列に格納できるのはなぜですか。
- Aヒープは 100 個を超える要素を含むことがないから
- B完全二分木なので、位置が単純なインデックスの式に従うから
- Cヒープのすべてのキーは等しいから
- D配列は自動的にキーをソート順に保つので、ポインタが不要になるから
5.ふつう
トライ(接頭辞木)が特に効率的なのはどのような用途ですか。
- A行列の格納
- B数値のソート
- C最短経路の探索
- Dオートコンプリートなどの接頭辞検索
6.ふつう
インデックス 0 から始まる配列に格納された二分ヒープで、インデックス i のノードの親はどこにありますか。
- Aインデックス i − 1
- Bインデックス ⌊(i − 1) / 2⌋
- Cインデックス ⌊i / 2⌋ + 1
- Dインデックス 2i + 1
7.むずかしい
基数木(radix tree、圧縮トライ)は通常のトライをどのように改良していますか。
- A各単語の最初の文字だけを保持する
- B子が 1 つだけのノードの連なりを、文字列でラベル付けされた 1 本の辺にまとめる
- C各ノードの子を頻度順にソートする
- D各単語を別々のノードではなく、根にあるハッシュテーブルに格納する
8.むずかしい
データベースやファイルシステムで B 木が使われるのはなぜですか。
- Aデータをソートせずに格納するから
- B再平衡化が不要だから
- C分岐数が大きいため木が浅く保たれ、遅いディスク読み込みが減るから
- Dどの配列よりもメモリ使用量が少ないので、索引全体が常に主記憶に収まるから
解答
- 1. C · すべてのノードが高々 2 つの子をもつ
- 2. A · 子をもたないノード
- 3. A · そのノードの値より小さい
- 4. B · 完全二分木なので、位置が単純なインデックスの式に従うから
- 5. D · オートコンプリートなどの接頭辞検索
- 6. B · インデックス ⌊(i − 1) / 2⌋
- 7. B · 子が 1 つだけのノードの連なりを、文字列でラベル付けされた 1 本の辺にまとめる
- 8. C · 分岐数が大きいため木が浅く保たれ、遅いディスク読み込みが減るから
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。