给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。
例如,给定一个 3叉树
:
返回其层序遍历:
[
[1],
[3,2,4],
[5,6]
]
说明:
- 树的深度不会超过
1000
。 - 树的节点总数不会超过
5000
。
/**
* // Definition for a Node.
* function Node(val,children) {
* this.val = val;
* this.children = children;
* };
*/
/**
* @param {Node} root
* @return {number[][]}
*/
var levelOrder = function(root) {
};
个人解法
思路:根结点入队,循环依次出队,当结点出队时,其孩子结点入队。
var levelOrder = function(root) {
if(root === null){
return [];
}
var results = [],
arr = [];
//root入队
arr.push(root);
//循环出队
while(arr.length !== 0){
//先记录当层节点
var result = [];
arr.forEach(element => {
result.push(element.val);
});
results.push([...result]);
//当层节点的子节点入队,并且当层节点出队
var length = arr.length;
for(var i = 0; i < length; i++){
var node = arr.shift();
for(var j = 0; j < node.children.length; j++){
arr.push(node.children[j]);
}
}
}
return results;
};