LeetCode 剑指 Offer 32 - II. 从上到下打印二叉树 II
题目描述
给你二叉树的根节点
root
,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
示例 1: 输入:
1 2 3 4 5 3 / \ 9 20 / \ 15 7输出:
1 [[15, 7], [9, 20], [3]]
示例 2: 输入:
1 2 3 4 5 1 / \ 2 3 / \ 4 5输出:
1 [[4, 5], [2, 3], [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
37
38
39
40
41
func levelOrderBottom(root *TreeNode) [][]int {
if root == nil {
return [][]int{}
}
var res [][]int
queue := []*TreeNode{root}
for len(queue) > 0 {
levelSize := len(queue)
var level []int
for i := 0; i < levelSize; i++ {
// 弹出队首节点
node := queue[0]
queue = queue[1:]
// 将当前节点值加入当前层
level = append(level, node.Val)
// 左子节点入队
if node.Left != nil {
queue = append(queue, node.Left)
}
// 右子节点入队
if node.Right != nil {
queue = append(queue, node.Right)
}
}
// 将当前层加入结果集
res = append(res, level)
}
// 反转结果集
for i, j := 0, len(res)-1; i < j; i, j = i+1, j-1 {
res[i], res[j] = res[j], res[i]
}
return res
}
1
write your code here
1
write your code here
相似题目
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
本博客所有文章除特别声明外,均采用