Leetcode 145. Binary Tree Postorder Traversal

来源:互联网 发布:centos关闭iptables 编辑:程序博客网 时间:2024/06/05 17:26

Given a binary tree, return the postorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},

   1    \     2    /   3

return [3,2,1].

Note: Recursive solution is trivial, could you do it iteratively?


第一种方法

    public List<Integer> postorderTraversal(TreeNode root) {        List<Integer> res = new ArrayList<>();        if (root == null) return res;        return helper(root, res);    }        private List<Integer> helper(TreeNode root, List<Integer> list) {        if (root == null) return list;        helper(root.left, list);        helper(root.right, list);        list.add(root.val);        return list;    }


第二种方法
    public List<Integer> postorderTraversal(TreeNode root) {        LinkedList<Integer> result = new LinkedList<>();        Stack<TreeNode> stack = new Stack<>();        TreeNode p = root;        while(!stack.isEmpty() || p != null) {            if(p != null) {                stack.push(p);                result.addFirst(p.val);                  p = p.right;                         } else {                TreeNode node = stack.pop();                p = node.left;                  }        }        return result;    }


原创粉丝点击