我遇到了這個問題的邏輯問題。我如何搜索整個樹(因爲我不能依賴任何順序搜索)並只返回一個匹配值(如果存在)?如果我返回遞歸調用,一旦它遇到第一片葉子並且沒有找到匹配,它會不會失敗?遞歸搜索bst非鍵值
使用下面的函數時,會進行調用,直到找到匹配項或到達樹的末尾,並且無論匹配項是否返回最左邊的節點。
我的遞歸函數,在序遍歷:
tnode *find(tnode *ptr, const char *str)
{
if (ptr == NULL) return ;
if(strcmp (str,ptr->str) == 0)
return ptr;
else
{
//search left subtree
if (ptr->left != NULL)
find(ptr->left, str) ;
// search right subtree
if (ptr->right != NULL)
find(ptr->right, str) ;
}
return;
}
這樣做了。謝謝。 – rcj 2013-04-22 14:52:37