2013-04-27 144 views
1
TreeNode search(int value, TreeNode root) 
{ 

    if(root.data==value) 
    { 
     return root; 
    } 
    else if(root.data < value) 
    { 
     search(value, root.Right); 
    } 
    else if (root.data > value) 
    { 
     search(value, root.Left); 
    } 

    return root; 

} 

我想在BST中搜索一個節點,問題是這個函數返回幾次。它確實返回了正確的節點,但最終返回Null。幫助我改進它。遞歸在BST中搜索

+0

另請檢查開頭是否爲root == null並返回null。這樣,如果沒有您正在搜索的節點,您將不會收到錯誤。 – 2013-04-27 12:03:09

回答

1

變化

search(value, root.Right); 

return search(value, root.Right); 

(也爲root.Left)。

否則你忽略了遞歸調用的返回值。

+0

所以如果我做root = search(value,root.Right); ,這是否意味着相同? – 2013-04-27 11:57:16

+0

在這種情況下是一樣的。 – 2013-04-27 11:59:32