题目
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如: 给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
来源:力扣(LeetCode)leetcode-cn.com/problems/co…
解题思路
- 题目中需要从上到下打印二叉树,也就是逐层打印
- 那么我们可以用一个数组保存节点的值,并且保存节点的深度
- 遍历节点时,以节点深度为数组下标,将节点值加到对应的深度中(即深度对应的层)
代码实现
var levelOrder = function(root) {
const queue = [{node:root, dep: 0}]
const ans = []
while(queue.length) {
const item = queue.shift()
if (!item.node) continue;
if (!ans[item.dep]) ans[item.dep] = [];
ans[item.dep].push(item.node.val)
queue.push({node: item.node.left, dep: item.dep + 1})
queue.push({node: item.node.right, dep: item.dep + 1})
}
return ans
};
如有错误欢迎指出,欢迎一起讨论!