我有一个二进制搜索树,我想得到一个具有如下特定值的子树:
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));
输出:
“找到!!”
空
但它总是返回一个空值。我想知道为什么以及如何解决这个问题。谢谢!
答案 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);
}