Java递归方法始终返回null

时间:2017-01-16 14:12:23

标签: java recursion tree binary-search-tree

我有一个二进制搜索树,我想得到一个具有如下特定值的子树:

private Node getNode(Node root,Object c){

        String data = String.valueOf(c);
        if(root !=  null) {
            getNode(root.left,c);
            if(root.data.equals(data)){
                System.out.println("found!!");
                 return root;
              }
            getNode(root.right,c);
          }
        return null;
    }

System.out.println(getNode(root,c));

输出:

“找到!!”

但它总是返回一个空值。我想知道为什么以及如何解决这个问题。谢谢!

1 个答案:

答案 0 :(得分:3)

您没有评估getNode(root.left, c)getNode(root.right, c)返回的结果。

正确的是:

private Node getNode(Node root, Object c) {
    String datac = String.valueOf(c);
    if(root == null) return null;
    if(Objects.equals(datac, root.data)) return root;
    Node tmp;
    return ((tmp = getNode(root.left, c)) != null) ? tmp : getNode(root.right, c);
}