在二叉搜索樹中搜索節點(值爲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