二分探索木でノード (値 k を持つ) を検索するための基本的な木探索アルゴリズム。「x」は、二分探索木のノードを示します。
TREE-SEARCH (x, k)
if x= NIL or k = key[x]
then return x
if k < key[x]
then return TREE-SEARCH(left[x], k)
else return TREE-SEARCH(right[x], k)
反復バージョン:
ITERATIVE-TREE-SEARCH(x, k)
while x ≠ NIL and k ≠ key[x]
do if k < key[x]
then x ← left[x]
else x ← right[x]
return x
(反復アルゴリズムの)最初の行は、実際には while (x ≠ NIL OR k ≠ key[x]) ではなく (while x ≠ NIL and k ≠ key[x]) であるべきではありませんか?
ちなみに、これはアルゴリズム分析の有名な本の 1 つからのものです。