二叉树的层序遍历-中等


难度:中等

题目描述:
给你一个二叉树,请你返回其按  层序遍历  得到的节点值。 (即逐层地,从左到右访问所有节点)。

示例:

二叉树:[3,9,20,null,null,15,7],
  [
  [3],
  [9,20],
  [15,7]
]
1
2
3
4
5
6


解题思路:

var levelOrder = function (root) {
  if (!root) return [];
  let queue = [root];
  let res = [];
  while (queue.length > 0) {
    let currentLevel = [];
    let len = queue.length;
    while (len) {
      let cur = queue.shift();
      currentLevel.push(cur.val);
      if (cur.left) queue.push(cur.left);
      if (cur.right) queue.push(cur.right);
      len--;
    }
    res.push(currentLevel);
  }
  return res;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var levelOrder = function (root) {
  if (!root) return [];
  let res = [];
  dfs(root, 0, res);
  return res;
};

function dfs(root, step, res) {
  if (root) {
    if (!res[step]) res[step] = [];
    res[step].push(root.val);
    dfs(root.left, step + 1, res);
    dfs(root.right, step + 1, res);
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
最后更新时间: 6/1/2020, 9:43:41 PM