Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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
Java 二叉搜索树递归加法_Java_Recursion_Binary Search Tree - Fatal编程技术网

Java 二叉搜索树递归加法

Java 二叉搜索树递归加法,java,recursion,binary-search-tree,Java,Recursion,Binary Search Tree,我正在尝试为我的BST进行递归添加。public add方法接受一个int参数,private方法接受相同的int和一个节点。这是我目前掌握的代码 public void add(int i) { add(i, root); } private void add(int i, Node n) { if (root==null){ root=new Node(i); } if (i < n.element) { if

我正在尝试为我的BST进行递归添加。public add方法接受一个int参数,private方法接受相同的int和一个节点。这是我目前掌握的代码

 public void add(int i) {

    add(i, root);

}

private void add(int i, Node n) {
    if (root==null){
        root=new Node(i);
    }

    if (i < n.element) {
        if (n.left != null) {
            add(i, n.left);
        } else {
            n.left = new Node(i);
        }
    } else if (i > n.element) {
        if (n.right != null) {
            add(i, n.right);
        } else {
            n.right = new Node(i);
        }
    }
}
public void add(int i){
添加(i,根);
}
专用void add(int i,节点n){
if(root==null){
根=新节点(i);
}
if(in元素){
如果(n.right!=null){
加(i,n.右);
}否则{
n、 右=新节点(i);
}
}
}
我不断地得到空指针,也尝试过调试,但我的逻辑中有一些我看不到的缺陷。

当树为空(root=null)时,您可以正确地创建一个新节点并将其分配给
root
变量。但这就是它应该做的一切。
因此:

if (root==null){
    root=new Node(i);
    return; // DONE!!
}
或者,如果您愿意:

if (root==null){
    root=new Node(i);
}
else if (i < n.element) {
....
if(root==null){
根=新节点(i);
}
else if(i
在你的
add
方法中,你引用了
root
,而它应该是参数
n
而不是后退一步,这可能是你认为它做了把戏的方式,doe我使用的打印方法也是错误的,所以我不确定是哪个做了把戏,但我为你感到骄傲!