Задача обычно выполняется во время рекурсивного обхода после ордера, и есть несколько примеров онлайн. Один из них - 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