该任务通常在递归后序遍历期间完成,并且有几个在线示例。其中之一是here,但我不知道它是否正确,因为_deleteTree()方法似乎只能执行BFS,并且不会对节点执行任何操作,并且只需将树的根设置为null即可完成删除操作。它无疑会返回一棵空树。但是,删除对所有树节点的引用是否正确?在java中反复破坏二叉树
此外,对于迭代后序遍历,比如说,像下面
public TreeNode postorderTraversal(TreeNode root) {
if(root==null) return null;
Stack<TreeNode> stack1=new Stack<>();
Stack<TreeNode> stack2=new Stack<>();
TreeNode cur=root;
stack1.push(cur);
while(!stack1.isEmpty()){
cur=stack1.pop();
if(cur!=null){
stack2.push(cur);
}
if(cur.left!=null){
stack1.push(cur.left);
}
if(cur.right!=null){
stack1.push(cur.right);
}
}
while(!stack2.isEmpty()){
//elements poped will be in post order sequence
}
return root;
}
如何反复摧毁一个二叉树?有人可以给出一个示例代码(Java)吗?谢谢!
您链接的代码具有误导性。它看起来像有人采取了C++的例子,并试图用Java重写它“一字不差”。 'deleteTree'概念根本不适用于Java。正如您所指出的,该方法的Java版本实际上并没有做任何事情。 – Sam