Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Data structures 为什么在我的二叉搜索树,搜索方法中返回null_Data Structures_Binary Search Tree - Fatal编程技术网

Data structures 为什么在我的二叉搜索树,搜索方法中返回null

Data 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

我不知道为什么我的方法中会出现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()){
        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;

}

我不知道我是怎么错过的,谢谢。我不知道我是怎么错过的,谢谢。