给定一个 n 叉树的根节点 root ,返回 其节点值的 后序遍历 。
    n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。

    示例 1:
    输入:root = [1,null,3,2,4,null,5,6]
    image.png
    输出:[1,3,5,6,2,4]

    示例 2:
    输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
    image.png
    输出:[1,2,3,6,7,11,14,4,8,12,5,9,13,10]

    二叉树的后序遍历

    1. /**
    2. * 二叉树的后序遍历
    3. *
    4. * @param root
    5. * @return
    6. */
    7. public List<Integer> postorder(TreeNode root) {
    8. ArrayList<Integer> result = new ArrayList<>();
    9. postOrder(root, result);
    10. return result;
    11. }
    12. /**
    13. * 深度优先-递归后序遍历:先左子树,然后右子树,最后根节点,
    14. * @param node
    15. */
    16. public void postOrder(TreeNode node, ArrayList<Integer> result) {
    17. if (node == null) {
    18. return;
    19. }
    20. // 继续遍历左子树
    21. postOrder(node.left, result);
    22. // 继续遍历右子树
    23. postOrder(node.right, result);
    24. // 根节点
    25. result.add(node.val);
    26. }

    那么 N 叉树的后序遍历也是类似的

    1. /**
    2. * N叉树的后序遍历
    3. *
    4. * @param root
    5. * @return
    6. */
    7. public List<Integer> postorder(Node root) {
    8. ArrayList<Integer> result = new ArrayList<>();
    9. postOrder(root, result);
    10. return result;
    11. }
    12. /**
    13. * 深度优先-递归后序遍历:先左子树,然后右子树,最后根节点,
    14. * @param node
    15. */
    16. public void postOrder(Node node, ArrayList<Integer> result) {
    17. if (node == null) {
    18. return;
    19. }
    20. // 继续所有子树
    21. for (Node child : node.children) {
    22. postOrder(child, result);
    23. }
    24. // 根节点
    25. result.add(node.val);
    26. }