递归:
/**
* // Definition for a Node.
* function Node(val,children) {
* this.val = val;
* this.children = children;
* };
*/
/**
* @param {Node} root
* @return {number[][]}
*/
var levelOrder = function(root) {
let result = [], index = 0;
const level = (root, index) => {
if (!root) return
if (!result[index]) result[index] = []
result[index].push(root.val)
root.children.forEach(child => level(child, index+1))
}
level(root, index)
return result
};
队列
var levelOrder = function(root) {
const res = [], queue = [];
if (!root) return res;
queue.push(root)
while(queue.length) {
let level = [], len = queue.length;
for (let i = 0; i < len; i++) {
let current = queue.shift();
level.push(current.val);
queue.push(...current.children)
}
res.push(level)
}
return res
};