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

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);

	}

}


版权声明:本文为dongqifan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。