Java 在二元搜索树中删除所有节点并将root设置为null?
我是Java新手。我在练习一些编程问题时,遇到了一个删除BST中所有节点的问题 我想用Java实现以下程序: 我编写了以下代码,但它只删除BST中最左边和最右边的元素。请帮助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
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;
}