Data structures 为什么在我的二叉搜索树,搜索方法中返回null
我不知道为什么我的方法中会出现nullData structures 为什么在我的二叉搜索树,搜索方法中返回null,data-structures,binary-search-tree,Data Structures,Binary Search Tree,我不知道为什么我的方法中会出现null 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()){ searc
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;
}
公共节点搜索(int数据,节点开始){
Node foundNode=null;
if(数据启动.getData()){
搜索(数据,start.getRightNode());
}
if(data==start.getData()){
foundNode=start;
}
返回foundNode;
}
如果我输入System.out.println(foundNode)
在return语句之前,我得到节点,但当它返回时,我得到null 以下是我的方法:
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;
}
}
以下是我的方法:
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;
}
}
您缺少递归函数调用的返回语句:
search(数据,start.getLeftNode())代码>和搜索(数据,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;
公共节点搜索(int数据,节点开始){
Node foundNode=null;
if(数据启动.getData()){
返回搜索(数据,start.getRightNode());
}
if(data==start.getData()){
foundNode=start;
}
返回foundNode;
}您缺少递归函数调用的返回语句:
search(数据,start.getLeftNode())代码>和搜索(数据,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;
公共节点搜索(int数据,节点开始){
Node foundNode=null;
if(数据启动.getData()){
返回搜索(数据,start.getRightNode());
}
if(data==start.getData()){
foundNode=start;
}
返回foundNode;
}我不知道我是怎么错过的,谢谢。我不知道我是怎么错过的,谢谢。