用于在二叉搜索树中搜索节点(值为 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]) 吗?
顺便说一句,如果您想知道,这是来自著名的算法分析书籍之一。