該任務通常在遞歸後序遍歷期間完成,並且有幾個在線示例。其中之一是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