タスクは通常、再帰的なポストオーダートラバーサルの間に行われ、オンラインの例はほとんどありません。そのうちの1つは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