@@ -0,0 +1,1070 @@
+/**%0A * Definition for binary tree%0A * public class TreeNode %7B%0A *     int val;%0A *     TreeNode left;%0A *     TreeNode right;%0A *     TreeNode(int x) %7B val = x; %7D%0A * %7D%0A */%0Apublic class Solution %7B%0A    public List%3CInteger%3E postorderTraversal(TreeNode root) %7B%0A        Stack %3CTreeNode%3E stack = new Stack %3C%3E ();%0A        List %3CInteger%3E retList = new ArrayList %3C%3E ();%0A        %0A        TreeNode cur = root;%0A        while(cur != null) %7B%0A            stack.add (cur);%0A            cur = cur.left;%0A        %7D%0A        %0A        TreeNode last = null;%0A        while(!stack.empty()) %7B%0A            cur = stack.peek();%0A            if (cur.right != null && last != cur.right) %7B%0A                cur = cur.right;%0A                while(cur != null) %7B%0A                    stack.add(cur);%0A                    cur = cur.left;%0A                %7D%0A            %7D else %7B%0A                // no right child, or right child has just been visited%0A                cur = stack.pop();%0A                retList.add(cur.val);%0A                last = cur;%0A            %7D%0A        %7D%0A        %0A        return retList;%0A    %7D%0A%7D%0A

Create Binary_tree_postorder_traversal.java