package tree;
import java.util.Stack;
public class IterativePostorderTraversalone {
/**
* 只用一个栈实现二叉树的非递归后序遍历
* @param args
*/
public static void printpost(TreeNode root){
Stack<TreeNode> stack = new Stack<>();
while(root!=null||!stack.isEmpty()){
while(root!=null){
if(root.right!=null){
stack.push(root.right);
}
stack.push(root);
root = root.left;
}
TreeNode node = stack.pop();
if(node.right!=null&&!stack.isEmpty()&&node.right==stack.peek()){//一定不要忘了栈为空的时候
stack.pop();
stack.push(node);
root = node.right;
}else {
System.out.print(node.value+" ");
root = null;
}
}
}
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(7);
printpost(root);
}
}
只用一个栈实现二叉树的非递归后序遍历
最新推荐文章于 2022-07-30 16:08:18 发布