剑指 Offer 32 - III. 从上到下打印二叉树 III

题目链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/

执行用时:12 ms, 在所有 Swift 提交中击败了73.68% 的用户
内存消耗:13.5 MB, 在所有 Swift 提交中击败了94.74% 的用户

解题思路

奇数行逆序

代码

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
27
28
29
30
class Solution {
func levelOrder(_ root: TreeNode?) -> [[Int]] {
if root == nil {
return []
}
var queue = [TreeNode]()
var res = [[Int]]()
var isOdd = true
queue.append(root!)
while !queue.isEmpty {
var row = [Int]()
for i in 0 ..< queue.count {
var cur = queue.removeFirst()
row.append(cur.val)
if let node = cur.left {
queue.append(node)
}
if let node = cur.right {
queue.append(node)
}
}
if !isOdd {
row.reverse()
}
res.append(row)
isOdd = !isOdd
}
return res
}
}

Kotlin:

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
27
28
29
30
class Solution {
fun levelOrder(root: TreeNode?): List<List<Int>> {
if (root == null) {
return emptyList()
}
val queue = ArrayDeque<TreeNode>()
val list = ArrayList<ArrayList<Int>>()
queue.add(root)
while (queue.isNotEmpty()) {
var arr = ArrayDeque<Int>()
for (i in queue.size downTo 1 step 1) {
var cur = queue.removeFirst()
if (list.size % 2 == 0) {
arr.addLast(cur.`val`)
} else {
arr.addFirst(cur.`val`)
}
cur.left?.let {
queue.add(cur.left!!)
}
cur.right?.let {
queue.add(cur.right!!)
}
}
var res = ArrayList<Int>(arr)
list.add(res)
}
return list
}
}

剑指 Offer 32 - III. 从上到下打印二叉树 III
https://pisces34.github.io/2021/11/19/leetcode/offer32-3/
发布于
2021年11月19日
许可协议