2013-04-27 126 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