原题链接:https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal/
解题思路:
使用递归首先要思考,当前递归函数运行的是第n次递归,那么当前要做哪些处理。先考虑的是,假设此时遍历到了最后一个节点为null,要给递归设置终止条件。该题要求按层输出结果,因此需要一个index标识当前所在的层。在当前递归,使用传入的index作为参数,遍历下一层节点时,将index+1。 /** * // Definition for a Node. * function Node(val,children) { * this.val = val; * this.children = children; * }; */ function recursion(node, res, index) { // 如果当前节点不存在,则退出递归 if (!node) { return; } // 将节点的值,按照当前层的index存入结果 res[index] ? res[index].push(node.val) : (res[index] = [node.val]); // 计算下一层的index let newIndex = index + 1; // 遍历子节点,并传入下一层的index for (let i = 0; i < node.children.length; i++) { recursion(node.children[i], res, newIndex); } } /** * @param {Node} root * @return {number[][]} */ var levelOrder = function (root) { let result = []; // 储存结果 // 递归遍历所有节点 recursion(root, result, 0); return result; };