给定一个 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> preorder(TreeNode root) {
    8. ArrayList<Integer> result = new ArrayList<>();
    9. preOrder(root, result);
    10. return result;
    11. }
    12. /**
    13. * 深度优先-递归前序遍历:先根节点,然后左子树,最后右子树
    14. * @param node
    15. */
    16. public void preOrder(TreeNode node, ArrayList<Integer> result) {
    17. if (node == null) {
    18. return;
    19. }
    20. // 根节点
    21. result.add(node.val);
    22. // 继续遍历左子树
    23. preOrder(node.left, result);
    24. // 继续遍历右子树
    25. preOrder(node.right, result);
    26. }

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

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