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

89 阅读1分钟

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

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

    3
   / \
  9  20
    /  \
   15   7

返回其层次遍历结果:

[
  [3],
  [9,20],
  [15,7]
]

解题思路

这题可以使用迭代的方式做,先把每层的节点都编号,如第一层是0、第二层是1、第三层是3 然后将层序遍历每层节点,将非空节点放入到数组中。

代码

var levelOrder = function(root) {
    if (!root) return []
    let stack = [[0, root]], ans = []
    while (stack.length) {
        let [index, root] = stack.pop()
        if (ans.length == index) ans.push([])
        ans[index].push(root.val)
        root.right && stack.push([index+1, root.right])
        root.left && stack.push([index+1, root.left])
    }

    return ans
};