我是Java新手。当我遇到一个删除BST中所有节点的问题时,我正在练习一些编程问题。
我想在Java中实现以下程序: http://www.geeksforgeeks.org/write-a-c-program-to-delete-a-tree/
我编写了以下代码,但它只删除了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);
}
答案 0 :(得分:0)
您正在学习的教程是关于与Java有很大不同的语言C.在C中,您必须手动分配和释放内存(通过您列出的链接中的malloc和free方法)。但是,Java管理幕后的所有内容。您可以说Java的malloc
版本是new
。但是为了释放内存,Java有一个垃圾收集器,通过删除未引用的对象来释放内存。
要用Java“删除”你的树,你所要做的就是取消引用你的root:
public void deleteTree() {
root = null;
}