一、前言
将以递归来解这道题。用递归的时候无需太注意这个递归时怎么展开的。我们只需要用知道这个递归是正确的就可以了(假设证明法证明递归是正确的)。
写递归的时候要注意3点:
- 递归函数的意义
- 边界条件
- 递归过程
二、题目描述
原谅我比较懒,我直接从leetcode截图,欲知更加清楚的描述,请看leetcode题目链接
三、思路
递归函数的意义:前序遍历以root为根节点的N叉树 边界条件:root为空节点 递归过程:前序遍历root的子树
四、代码
/**
* // 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;
}