LeetCode 剑指 Offer 32 - III. 从上到下打印二叉树 III
题目描述
给定一个二叉树,返回其节点值的层序遍历(即逐层地,从左到右访问所有节点),但每一层的节点值需要交替从左到右和从右到左返回。
示例 1: 输入:
1 2 3 4 5 3 / \ 9 20 / \ 15 7输出:
1 [[3], [20, 9], [15, 7]]
示例 2: 输入:
1 1输出:
1 [[1]]
提示:
- 节点数目在范围 [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
27
28
29
30
31
32
33
34
35
36
func zigzagLevelOrder(root *TreeNode) [][]int {
var res [][]int
if root == nil {
return res
}
queue := []*TreeNode{root}
leftToRight := true
for len(queue) > 0 {
levelSize := len(queue)
curLevel := make([]int, levelSize)
for i := 0; i < levelSize; i++ {
curNode := queue[0]
queue = queue[1:]
if leftToRight {
curLevel[i] = curNode.Val
} else {
curLevel[levelSize-1-i] = curNode.Val
}
if curNode.Left != nil {
queue = append(queue, curNode.Left)
}
if curNode.Right != nil {
queue = append(queue, curNode.Right)
}
}
res = append(res, curLevel)
leftToRight = !leftToRight
}
return res
}
1
write your code here
1
write your code here
相似题目
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
本博客所有文章除特别声明外,均采用