Given an n-ary tree, return the level order traversal of its nodes’ values.
Pretty straightforward BFS traversal logic. Here are some small gotcha’s:
- Add condition for empty/undefined input.
- When you return the list of lists, the expectation is to return just values and not the Node object. Notice the last line (ret.map(..)) is doing just that.
/** * // Definition for a Node. * function Node(val,children) { * this.val = val; * this.children = children; * }; */ /** * @param {Node} root * @return {number[][]} */ var levelOrder = function(root) { if ( !root || root.length === 0) return []; let ret = [[root]]; let currLevel = 0; while (true) { let nextLevel = []; ret[currLevel].forEach((item) => item.children.forEach((child) => nextLevel.push(child))); if ( nextLevel.length === 0 ) break; ret.push(nextLevel); currLevel++; } return ret.map((arr) => arr.map((item) => item.val)) }; |