从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。力扣原文
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
解题思路:
将每个点节点入队并标记leva,层数来源于父节点,先将父节点出队,进行push(val),判断left、right否存在,存在入队leva+1
var levelOrder = function (root) {
if (!root) return [];
let queue = [[root, 0]];
let result = [];
while (queue.length) {
let [node, leva] = queue.shift();
let { val, left, right } = node;
if (!result[leva]) {
result[leva] = [];
}
result[leva].push(val);
leva++;
left && queue.push([left, leva]);
right && queue.push([right, leva]);
}
return result;
};