データ構造とアルゴリズム

空の二分探索木に、1, 2, 3, …, 1000 の順に値を挿入した(つり合いをとる操作はしない)。この木で1000を探すとき、根から比べ始めて、見つかるまでに比べる節の数はいくつか。

  1. A10
  2. B500
  3. C1,000
答えと解説を見る

正解:C. 1,000

昇順に挿入すると、新しい値は毎回それまでの最大値の右の子になるので、木は右にだけ伸びた1本の列(高さ999)になります。1000はいちばん下にあるので、1, 2, …, 1000 の1,000個の節と比べることになり、連結リストを先頭からたどるのと同じ O(n) です。つり合いのとれた木なら段の数は約 log₂ 1000 ≈ 10 なので、AVL木や赤黒木のように挿入や削除のたびに形を整える平衡二分探索木を使えば、最悪でも O(log n) を保てます。

  • A. つり合いのとれた木なら約10回ですが、この木は1本の列になっています。
  • B. 平均の位置の値を探す場合に近い数で、1000は末尾にあります。
  • C. 正しい。木が1本の列になり、1000を探すには全部の節と比べます。
この分野を解く 分野ページへ

関連する計算ツール

データ構造とアルゴリズムの参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

データ構造とアルゴリズムのほかの問題

  1. データベースやファイルシステムの索引に、二分探索木ではなくB木(B+木を含む)がよく使われる主な理由はどれか。
  2. 頂点が100万個、辺が300万本ほどの道路網のように、頂点の数に比べて辺の少ない(疎な)グラフをメモリに記憶する方法として適切なものはどれか。
  3. 辺に重みのないグラフで、出発点から各頂点までの最短の辺の数を求めたい。適した探索の方法と、そのとき使うデータ構造の組はどれか。
  4. 辺に向きのないグラフで、各頂点の隣の頂点が次のとおりである。A: B, C / B: A, D, E / C: A, F / D: B / E: B, F / F: C, E。頂点 A から再帰的な深さ優先探索を行う。隣の頂点はここに書いた順に調べ、まだ訪れていない頂点が見つかったらすぐにその頂点へ進む。頂点を訪れる順はどれか。
  5. 辺に向きのないグラフで、辺の重み(距離)が S−A: 4、S−B: 1、A−B: 2、A−C: 1、B−C: 5、C−T: 3、A−T: 6 である。ダイクストラ法で S から T までの最短経路を求めたとき、その経路と長さはどれか。