在二叉搜索树中搜索节点(值为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
不宜(迭代算法)的第一行实际上是同时(X≠NIL或K≠键[X])代替(而X≠ NIL和k≠键[x])?顺便说一句,如果你想知道,这是来自算法分析的着名书籍之一。
是不是实际需要的OR部分? 我的意思是如果你来到x = NIL的部分,就出来并返回x,或者如果你找到了key,那么再返回并打印x。 而不是等待两者同时发生。我的理解是否正确? – halluc1nati0n 2009-10-01 07:02:30
编辑: 哦,我现在得到它,while循环总是有一个棘手的有点逻辑参数:d 如果我们去到x =零,有或关键字时,第k≠键[X]仍然会保留,因此while循环仍然会尝试执行(我们不打算这么做)。 这很有趣,我认为现在甚至把它当作一个问题,我觉得很愚蠢! – halluc1nati0n 2009-10-01 07:16:08