[路飞]leetcode-N叉树的前序遍历(递归)

153 阅读1分钟

题目描述

给定一个 N 叉树,返回其节点值的 前序遍历 。

题目分析

前面我们分析过二叉树的前序遍历,N叉树与二叉树相似,唯一不同的就是二叉树节点固定 left、right,N叉树则需要遍历节点然后进行递归。

前序遍历:根、左、右

下面为递归思路分析

1、函数意义:将N叉树前序遍历进行输出

2、边界条件:树为空

3、 递归过程,从root开始,遍历递归当前二叉树的节点,直到结束

代码实现


var __preOrder = (root, ans) => {
  if (!root) return;
  ans.push(root.val);
  for (let i = 0; i < root.children.length; i++) {
    if (root.children[i]) {
      __preOrder(root.children[i], ans);
    }
  }
  return;
};

/**
 * @param {Node|null} root
 * @return {number[]}
 */
var preorder = function (root) {
  const ans = [];
  __preOrder(root, ans);
  return ans;
};