107. 二叉树的层序遍历 II
给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
3
/ \
9 20
/ \
15 7
返回其自底向上的层序遍历为:
[
[15,7],
[9,20],
[3]
]
//bfs常规解,level前 + 一行翻转 = 完事
//2,bfs常规解
func levelOrderBottom(root *TreeNode) [][]int {
if root == nil {
return nil
}
levels := [][]int{}
queue := []*TreeNode{root}
for len(queue) > 0 {
n := len(queue)
level_tmp := []int{}
for i := 0; i < n; i++ {
root = queue[0]
queue = queue[1 :]
level_tmp = append(level_tmp, root.Val)
if root.Left != nil {
queue = append(queue, root.Left)
}
if root.Right != nil {
queue = append(queue, root.Right)
}
}
levels = append(levels, level_tmp)
}
k := len(levels) //+ 一行翻转
for i := 0; i < k/2; i++ {
levels[i], levels[k-1-i] = levels[k-1-i], levels[i]
}
return levels
}