姊妹篇:

102. 二叉树的层序遍历


107. 二叉树的层次遍历II

难度: 简单




递归写法:

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
//Definition for a binary tree node.
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}

var res [][]int

func levelOrderBottom(root *TreeNode) [][]int {
res = [][]int{}
bfs(root, 0)

reverse(res)
return res

}

func bfs(root *TreeNode, level int) {
if root != nil {
if len(res) == level {
res = append(res, []int{})
}

res[level] = append(res[level], root.Val)
bfs(root.Left, level+1)
bfs(root.Right, level+1)
}
}
func reverse(res [][]int) [][]int {
long := len(res) - 1
i := 0
for long > i {
res[long], res[i] = res[i], res[long]
long--
i++
}
return res
}


相比于102. 二叉树的层序遍历,只是在输出前,多了一个反转的操作