Эта задача обычно выполняется во время рекурсивного обхода почтового заказа, и в Интернете есть несколько примеров. Один из них находится здесь , но мне интересно, правильно ли это, потому что кажется, что метод _deleteTree() выполняет только BFS и не выполняет никаких операций с узлами, а удаление выполняется путем простого присвоения корню дерева значения null. Без сомнения, он вернет пустое дерево. Но правильно ли удалить ссылки на все узлы дерева?
Кроме того, для итеративного обхода почтового заказа, скажем, как показано ниже
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)? Спасибо!
deleteTreeпросто не применима к Java. Java-версия метода, как вы указали, на самом деле ничего не делает. - person Sam   schedule 30.12.2016