二叉树前中后序遍历非递归实现

package MyExc;

import java.util.Stack;

class TreeNode{
    int data;
    TreeNode left;
    TreeNode right;
}


public class BinaryTree {
    public void preOrder(TreeNode head){
        Stack<TreeNode> stack = new Stack<>();
        stack.add(head);
        while(!stack.isEmpty()){
            head=stack.pop();
            System.out.println(head.data);
            if(head.right==null){
                stack.push(head.right);
            }
            if(head.left==null){
                stack.push(head.left);
            }
        }
    }

    public void inOrder(TreeNode head){
        Stack<TreeNode> stack = new Stack<>();
        //只要不为空,一直往左走
        if(head!=null){
            head=head.left;
        }else{//为空,弹出一个,然后向右走一步
            head=stack.pop();
            System.out.println(head.data);
            head = head.right;
        }
    }

    public void postOrder(TreeNode head){
        Stack<TreeNode> stack = new Stack<>();
        Stack<TreeNode> help = new Stack<>();
        stack.push(head);

        while (!stack.isEmpty()){
            head = stack.pop();
            help.push(head);
            if(head.left!=null){
                stack.push(head.left);
            }
            if(head.right!=null){
                stack.push(head.right);
            }
            while (!help.isEmpty()){
                System.out.println(help.pop().data);
            }
        }
    }
}
原文地址:https://www.cnblogs.com/kristse/p/BinaryTree.html