1.やさしい
二分最小ヒープの最小の要素はどこにありますか。
- A最も左の葉
- B配列の最後の位置
- C根
- Dいずれかの葉にあり、探さなければならない
2.やさしい
木の根(ルート)とは何ですか。
- A子を持たないノード
- B中間にある任意のノード
- C親を持たない最上位のノード
- D最大の値を持つノード
3.やさしい
配列では O(1) だが、単方向連結リストでは O(n) となる操作はどれですか。
- A先頭への挿入
- B最初の要素の読み取り
- Cインデックス i の要素へのアクセス
- D先頭の要素の削除
4.ふつう
二分ヒープをポインタなしで配列に格納できるのはなぜですか。
- Aヒープは 100 個を超える要素を含むことがないから
- B完全二分木なので、位置が単純なインデックスの式に従うから
- Cヒープのすべてのキーは等しいから
- D配列は自動的にキーをソート順に保つので、ポインタが不要になるから
5.ふつう
n 要素の配列の中央に要素を挿入するコストはどれですか。
- A各要素が n 回移動するので O(n²)
- B後ろの要素をずらさなければならないので O(n)
- C二分探索のため O(log n)
- Dインデックスがわかっているので O(1)
6.ふつう
二分ヒープに新しい要素はどのように挿入されますか。
- Aより大きい要素をすべて 1 つ右にずらして、ソートされた位置に挿入する
- Bヒープ全体を一から作り直す
- C配列の末尾に置き、ヒープ性に反している間は上へ移動させる(sift up)
- D根に置き、下へ移動させる(sift down)
7.むずかしい
データベースがインデックスに通常の B 木ではなく B+ 木をよく使うのはなぜですか。
- AB+ 木はデータを根にだけ格納するから
- Bすべてのレコードが連結された葉にあるので、範囲の走査が効率的になるから
- CB+ 木は二分の内部ノードを使うので、ディスクの読み取りが減るから
- DB+ 木は平衡を保つ必要がないから
8.むずかしい
二分探索木から 2 つの子を持つノードを削除するには、通常どうしますか。
- A部分木全体を削除する
- B中間順の後続ノード(または先行ノード)で置き換え、そのノードを削除する
- C根と入れ替える
- Dその下の部分木を一から作り直し、含まれていたすべてのキーを挿入し直す
解答
- 1. C · 根
- 2. C · 親を持たない最上位のノード
- 3. C · インデックス i の要素へのアクセス
- 4. B · 完全二分木なので、位置が単純なインデックスの式に従うから
- 5. B · 後ろの要素をずらさなければならないので O(n)
- 6. C · 配列の末尾に置き、ヒープ性に反している間は上へ移動させる(sift up)
- 7. B · すべてのレコードが連結された葉にあるので、範囲の走査が効率的になるから
- 8. B · 中間順の後続ノード(または先行ノード)で置き換え、そのノードを削除する
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。