解法一:递归

递归进行后序遍历。

  1. /*
  2. // Definition for a Node.
  3. class Node {
  4. public int val;
  5. public List<Node> children;
  6. public Node() {}
  7. public Node(int _val) {
  8. val = _val;
  9. }
  10. public Node(int _val, List<Node> _children) {
  11. val = _val;
  12. children = _children;
  13. }
  14. };
  15. */
  16. class Solution {
  17. private List<Integer> list;
  18. public List<Integer> postorder(Node root) {
  19. list = new LinkedList<>();
  20. postOrder(root);
  21. return list;
  22. }
  23. private void postOrder(Node root) {
  24. if (root == null) {
  25. return;
  26. }
  27. for (Node node : root.children) {
  28. postOrder(node);
  29. }
  30. list.add(root.val);
  31. }
  32. }