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}
