Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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 在二元搜索树中删除所有节点并将root设置为null?_Java_Binary Search Tree - Fatal编程技术网

Java 在二元搜索树中删除所有节点并将root设置为null?

Java 在二元搜索树中删除所有节点并将root设置为null?,java,binary-search-tree,Java,Binary Search Tree,我是Java新手。我在练习一些编程问题时,遇到了一个删除BST中所有节点的问题 我想用Java实现以下程序: 我编写了以下代码,但它只删除BST中最左边和最右边的元素。请帮助 public boolean isLeaf(Node n){ return (n.lchild==null && n.rchild==null); } public void deleteTree(){ deleteTree(root); } public void deleteTree

我是Java新手。我在练习一些编程问题时,遇到了一个删除BST中所有节点的问题

我想用Java实现以下程序:

我编写了以下代码,但它只删除BST中最左边和最右边的元素。请帮助

public boolean isLeaf(Node n){
    return (n.lchild==null && n.rchild==null);

}
public void deleteTree(){
    deleteTree(root);
}
public void deleteTree(Node n){
    if(n==null)
        return;
    if(n.lchild!=null && isLeaf(n.lchild))
        n.lchild=null;
    else
        deleteTree(n.lchild);
    if(n.rchild!=null && isLeaf(n.rchild))
        n.rchild=null;
    else
        deleteTree(n.rchild);
}

下面的教程是关于与Java有很大不同的C语言的。在C语言中,您必须手动分配和释放内存(通过您列出的链接中的malloc和free方法)。然而,Java在幕后管理所有这些。可以说Java版本的
malloc
new
。但是为了释放内存,Java有一个垃圾收集器,它通过删除未引用的对象来释放内存。 要在Java中“删除”您的树,您所要做的就是取消对根的引用,如下所示:

public void deleteTree() {
    root = null;
}