[路飞]_LeetCode_剑指 Offer 32 - II. 从上到下打印二叉树 II

题目

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

例如: 给定二叉树: [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7
复制代码

返回其层次遍历结果:

[
  [3],
  [9,20],
  [15,7]
]
复制代码

来源:力扣(LeetCode)leetcode-cn.com/problems/co…

解题思路

  1. 题目中需要从上到下打印二叉树,也就是逐层打印
  2. 那么我们可以用一个数组保存节点的值,并且保存节点的深度
  3. 遍历节点时,以节点深度为数组下标,将节点值加到对应的深度中(即深度对应的层)

代码实现

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
};
复制代码

如有错误欢迎指出,欢迎一起讨论!

猜你喜欢

转载自juejin.im/post/7041544766579802119