二叉树的层序遍历-中等
难度:中等
题目描述:
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],
[
[3],
[9,20],
[15,7]
]
1
2
3
4
5
6
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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15