用俩个栈实现二叉树的非递归后序遍历

来源:互联网 发布:nginx 1.10 1.12 编辑:程序博客网 时间:2024/06/03 14:40
package tree;import java.util.Stack;public class IterativePostorderTraversal {/** * 用一个栈实现二叉树的非递归后序遍历 * @param args */public static void printpost(TreeNode root){Stack<TreeNode> stack1 = new Stack<>();Stack<Boolean> stack2 = new Stack<>();while(root!=null||!stack1.isEmpty()){while(root!=null){stack1.push(root);stack2.push(false);root = root.left;}TreeNode node = stack1.pop();if(!stack2.pop()){stack1.push(node);stack2.push(true);root = node.right;}else{System.out.print(node.value+" ");}}}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);}}

0 0
原创粉丝点击