用JavaScript刷leetcode第589题-N叉树的前序遍历(递归)

138 阅读1分钟

一、前言

将以递归来解这道题。用递归的时候无需太注意这个递归时怎么展开的。我们只需要用知道这个递归是正确的就可以了(假设证明法证明递归是正确的)。
写递归的时候要注意3点:

  • 递归函数的意义
  • 边界条件
  • 递归过程

二、题目描述

原谅我比较懒,我直接从leetcode截图,欲知更加清楚的描述,请看leetcode题目链接

image.png

三、思路

递归函数的意义:前序遍历以root为根节点的N叉树 边界条件:root为空节点 递归过程:前序遍历root的子树

四、代码

git代码链接

/**
 * // Definition for a Node.
 * function Node(val, children) {
 *    this.val = val;
 *    this.children = children;
 * };
 */

/**
 * @param {Node|null} root
 * @return {number[]}
 */

const preorder = function (root) {
  // 结果数组
  const res = [];

  // 递归函数
  const __preorder = function (root, res) {
    if(root === null) return;
    
    res.push(root.val);

    // 递归处理子树
    for(let i = 0; i < root.children.length; ++i) {
      __preorder(root.children[i], res);
    }
  }

  __preorder(root, res);

  return res;
}