Java recursive beats 100% also included the iterative solutions
Recursive\n\nclass Solution {\n    List<Integer> result;\n    public List<Integer> postorder(Node root) {\n        result = new ArrayList<>();\n        helper(r
**Recursive**\n```\nclass Solution {\n    List<Integer> result;\n    public List<Integer> postorder(Node root) {\n        result = new ArrayList<>();\n        helper(root);\n        return result;\n    }\n    \n    private void helper(Node root){\n        if (root == null)\n            return;\n        for (int i=0;i<root.children.size();i++){\n            helper(root.children.get(i));\n        }\n        result.add(root.val);\n    }\n}\n```\n\n**Iterative**\n```\n    public List<Integer> postorderIterative1(Node root) {\n        Stack<Node> s = new Stack<>();\n        if (root  == null)\n            return result;\n        s.push(root);\n        while (!s.isEmpty()){\n            Node node = s.peek();\n            if (node.children != null && node.children.size() > 0){\n                for (int i=node.children.size()-1;i>=0;i--)\n                   s.push(node.children.get(i));\n                node.children = null;\n            }\n            else\n                result.add(s.pop().val);\n        }\n        return result;\n    }\n    \n    public List<Integer> postorderIterative2(Node root) {\n        Stack<Node> s = new Stack<>();\n        if (root  == null)\n            return result;\n        s.push(root);\n        while (!s.isEmpty()){\n            Node node = s.pop();\n            result.add(node.val);\n            for (Node n : node.children)\n                   s.push(n);\n        }\n        Collections.reverse(result);\n        return result;\n    }\n```
['Stack', 'Recursion', 'Iterator', 'Java']