Java Iterative Solution Using Two Stacks. 
The iterative solution is similar to the pre-order\'s, except for when to add the root to the list. The second stack is usd to store the node that pops from the
The iterative solution is similar to the pre-order\'s, except for when to add the root to the list. The second stack is usd to store the node that pops from the first stack. \n```\nclass Solution {\n    public List<Integer> postorder(Node root) {\n        List<Integer> list = new ArrayList<Integer>();\n        if(root == null) return list;\n        \n        Stack<Node> stack1 = new Stack<>();\n        Stack<Node> stack2 = new Stack<>();\n        stack1.add(root);\n        \n        while(!stack1.empty())\n        {\n            Node top = stack1.pop();\n            stack2.push(top); \n            for(int i = 0; i < top.children.size(); i++)\n                stack1.push(top.children.get(i));\n        }\n        \n        while(!stack2.empty())\n            list.add(stack2.pop().val);\n        \n        return list;\n    }\n}\n```
[]