题目

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:

Given binary tree [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7
return its level order traversal as:
[
  [3],
  [9,20],
  [15,7]
]

大致意思

给你一个二叉树,得到每一个层级都存在哪些数字

解决方案

  • 进行遍历,每次遍历,level + 1
  • 如果当前的数组的长度小于level的话,我们主动push一个空数组进行
if (array.length < level) {
  array.push([]);
}
  • 由于所有的数据都是根据level来存放,所以存放当前level的数组为 array[level - 1]
  • 把遍历的当前值push进行 arr.push(root.val);
  • 持续遍历
search(root.left, level + 1);
search(root.right, level + 1);

源代码

var levelOrder = function(root) {
  if (!root) return [];
  var array = [];
  search(root, 1);

  function search(root, level) {
    if (root) {
      if (array.length < level) {
        array.push([]);
      }
      var arr = array[level - 1];
      arr.push(root.val);
      search(root.left, level + 1);
      search(root.right, level + 1);
    } else {
      return;
    }
  }

  return array;
};