[路飞]leetcode-32-II.从上到下打印二叉树II

117 阅读1分钟

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

例如:
给定二叉树: [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;
};