我不知道为什么我的方法会变空?
public Node<E> search(int data, Node<E> start){
Node<E> foundNode = null;
if(data < start.getData()){
search(data, start.getLeftNode());
}
if(data > start.getData()){
search(data, start.getRightNode());
}
if(data == start.getData()){
foundNode = start;
}
return foundNode;
}
如果我在return语句之前放置System.out.println(foundNode);
我得到节点但是当它返回它时我得到null !!
答案 0 :(得分:0)
这是我的方法:
private Node search(String name, Node node){
if(node != null){
if(node.name().equals(name)){
return node;
} else {
Node foundNode = search(name, node.left);
if(foundNode == null) {
foundNode = search(name, node.right);
}
return foundNode;
}
} else {
return null;
}
}
答案 1 :(得分:0)
您缺少递归函数调用的return语句:
search(data,start.getLeftNode());
和search(data, start.getRightNode());
只有当没有执行递归调用时,您的方法才会起作用,并且如果它们被执行,则返回的foundNode
仍为NULL
,因为它是一个局部变量。
所以,正确的代码是:
public Node<E> search(int data, Node<E> start){
Node<E> foundNode = null;
if(data < start.getData()){
return search(data, start.getLeftNode());
}
if(data > start.getData()){
return search(data, start.getRightNode());
}
if(data == start.getData()){
foundNode = start;
}
return foundNode;
}