145. Binary Tree Postorder Traversal

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].

思路:加另一个stack来对preorder取反向操作

    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<Integer>();
        if (root==null){
            return list;
        }

        Stack<TreeNode> one = new Stack<TreeNode>();
        Stack<TreeNode> two = new Stack<TreeNode>();


        one.push(root);

        while(!one.empty()){
            TreeNode node = one.pop();
            two.push(node);

            if (node.left!=null){
                one.push(node.left);
            }

            if (node.right!=null){
                one.push(node.right);
            }

        }

        while(!two.empty()){
            TreeNode nodes = two.pop();
            list.add(nodes.val);
        }
        return list;
    }
}

results matching ""

    No results matching ""