LeetCode-102.二叉树的层序遍历

题目描述

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

示例1

1
2
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

示例2

1
2
输入:root = [1]
输出:[[1]]

示例3

1
2
输入:root = []
输出:[]

提示

  • 树中节点数目在范围 [0, 2000]
  • -1000 <= Node.val <= 1000

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
func levelOrder(_ root: TreeNode?) -> [[Int]] {
guard let root = root else {
return []
}
var res = [[Int]]()
var queue = [root]

while !queue.isEmpty {
var length = queue.count
var levelRes = [Int]()
while length > 0 {
let cur = queue.removeFirst()
levelRes.append(cur.val)

if let left = cur.left {
queue.append(left)
}
if let right = cur.right {
queue.append(right)
}
length -= 1
}
res.append(levelRes)
}
return res
}