[Lintcode] 68. Binary Tree Postorder Traversal

来源:互联网 发布:伤不起dj网络歌手 编辑:程序博客网 时间:2024/06/06 14:13

给出一棵二叉树,返回其节点值的后序遍历。

public class Solution {    /**     * @param root: The root of binary tree.     * @return: Postorder in ArrayList which contains node values.     */    public List<Integer> postorderTraversal(TreeNode root) {        List<Integer> result = new ArrayList<Integer>();        Stack<TreeNode> stack = new Stack<TreeNode>();        TreeNode prev = null;        TreeNode curr = root;                if (root == null) {            return result;        }        stack.push(root);        while (!stack.empty()) {            curr = stack.peek();            if (prev == null || prev.left == curr || prev.right == curr) {                if (curr.left != null) {                    stack.push(curr.left);                } else if (curr.right != null) {                    stack.push(curr.right);                }            } else if (curr.left == prev) {                if (curr.right != null) {                    stack.push(curr.right);                }            } else {                result.add(curr.val);                stack.pop();            }            prev = curr;        }        return result;    }}


原创粉丝点击