BST 探索 — 二分探索木での値の検索

ルートからターゲットまでの左/右パスをたどり、二分探索木で値を検索する方法を学びます。平均および最悪ケースの計算量を理解します。

Operations

詳細な説明

BST 探索アルゴリズム

二分探索木での探索は順序性を活用します:各ノードで、ターゲットが小さければ左に、大きければ右に、等しければ見つかりました。各レベルでのこの二択の判断が BST に O(log n) の平均探索時間を与えます。

アルゴリズム

SEARCH(node, target):
  if node is NULL: return NOT_FOUND
  if target == node.value: return FOUND
  if target < node.value: return SEARCH(node.left, target)
  return SEARCH(node.right, target)

ステップバイステップの例

この BST で 6 を検索:

        8
       / \
      3   10
     / \    \
    1   6    14
       / \
      4   7

パス: 8 → 3 → 6(見つかった!)
ステップ: 6 < 8(左へ) → 6 > 3(右へ) → 6 == 6(見つかった)

時間計算量

ケース 計算量 条件
最良 O(1) ターゲットがルート
平均 O(log n) 木がある程度バランスしている
最悪 O(n) 木が完全に偏っている

線形探索との比較

ソートされていない配列では、値の検索にすべての要素をスキャンする必要があります — 最悪ケースで O(n)。バランスした BST はこれを O(log n) に削減し、100万要素では 1,000,000 回の比較ではなく ~20 回の比較で済みます。

ユースケース

BST 探索はデータベース(B-tree インデックスルックアップ)、メモリ内順序付きマップ(Java TreeMap、C++ std::map)、オートコンプリートシステム(BST の概念を拡張した Trie での接頭辞検索)、および二分探索アルゴリズムの中核操作です。BST 探索の理解はすべてのソフトウェアエンジニアに不可欠です。

試してみる — Binary Tree Visualizer

フルツールを開く