二叉树遍历(非递归)

来源:互联网 发布:php oa系统源码 编辑:程序博客网 时间:2024/06/04 18:37
package Tree;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Stack;class TreeNode {       int val;       TreeNode left;       TreeNode right;       TreeNode(int x) { val = x; }}public class TreeTraversal {    //后序遍历    public List<Integer> postorderTraversal(TreeNode root) {        List<Integer> res = new ArrayList<Integer>();        if(root == null) return res;        Stack<TreeNode> stack = new Stack<TreeNode>();        TreeNode p = root;        while(!stack.isEmpty() || p != null)        {            if(p != null)            {                stack.add(p);                res.add(p.val);                p = p.right;            }else            {                p = stack.pop().left;            }        }        Collections.reverse(res);        return res;    }    //先序遍历    public List<Integer> preorderTraversal(TreeNode root) {        List<Integer> res = new ArrayList<Integer>();        if(root == null) return res;        Stack<TreeNode> stack = new Stack<TreeNode>();        TreeNode p = root;        while(!stack.isEmpty() || p != null)        {            if(p != null)            {                stack.add(p);                res.add(p.val);                p = p.left;            }else            {                p = stack.pop().right;            }        }        return res;    }    //中序遍历    public List<Integer> inorderTraversal(TreeNode root) {        List<Integer> res = new ArrayList<Integer>();        if(root == null) return res;        Stack<TreeNode> stack = new Stack<TreeNode>();        TreeNode p = root;        while(!stack.isEmpty() || p != null)        {            if(p != null)            {                stack.add(p);                p = p.left;            }else            {                p = stack.pop();                res.add(p.val);                p = p.right;            }        }        return res;     }    public static void main(String[] args) {        // TODO Auto-generated method stub    }}
1 0