Java 二进制搜索树空指针异常

Java 二进制搜索树空指针异常,java,pointers,tree,null,binary-search-tree,Java,Pointers,Tree,Null,Binary Search Tree,我想我已经习惯了我的代码,所以你不需要太多的关注,只要检查代码的第一行就行了。我不明白错误发生的地方出了什么问题 public boolean add(E x) { System.out.println(x); System.out.println(root); if(root.equals(null)){ root.equals(x); return true; } if(root.equals(x)){

我想我已经习惯了我的代码,所以你不需要太多的关注,只要检查代码的第一行就行了。我不明白错误发生的地方出了什么问题

public boolean add(E x) {
    System.out.println(x);
    System.out.println(root);
    if(root.equals(null)){
        root.equals(x);
        return true;
    }
    if(root.equals(x)){        
        return false;
    }
    BinaryNode<E> save = root;   //create new nod copy of root

    while((!save.left.equals(x)) && (!save.left.equals(null))){ //check so save.nex isnt x and that save.next exists
    save=save.left;
    }
    if(save.left.equals(null)){
        save = root;  //puts save back to root again
        while((!save.right.equals(x)) && (!save.right.equals(null))){
            save=save.right;
        }

        if(save.right.equals(null)){
            save.right.equals(x);
            return true;
        }


} return false;
    }
公共布尔加法(ex){
系统输出println(x);
System.out.println(根);
if(root.equals(null)){
根等于(x);
返回true;
}
如果(根等于(x)){
返回false;
}
BinaryNode save=root;//创建根目录的新节点副本
而((!save.left.equals(x))&(!save.left.equals(null)){//请检查save.nex是否为x,并且save.nex是否存在
save=save.left;
}
if(save.left.equals(null)){
save=root;//再次将save放回root
而((!save.right.equals(x))&(!save.right.equals(null))){
save=save.right;
}
if(save.right.equals(null)){
save.right.equals(x);
返回true;
}
}返回false;
}

我在
if(root.equals(null)){
这只是一个if语句,我没有试图访问不存在的东西???

如果
root
确实等于
null
,那么您试图通过调用
equals
方法来访问不存在的东西。只需使用
if(root==null)

使用
root.equals(null)
您试图实现什么?您是否尝试过使用
if(root==null)