题目描述:具体描述见原题。简单来说就是倒序输出二叉树层次序遍历结果。
解题思路:层次序遍历二叉树有两种解法,广度优先遍历(BFS),深度优先遍历(DFS),为了突出层次,所以选择BFS,BFS更能直观体现遍历过程。具体过程见代码。
具体代码:
func levelOrderBottom(root *TreeNode) [][]int {
res := make([][]int, 0)
if root == nil {
return res
}
temp, next, queue, current, level := make([]int, 0), 0, make([]*TreeNode, 0), 1, make([][]int, 0)
queue = append(queue, root)
for len(queue) != 0 {
for current != 0 {
node := queue[0]
if node.Left != nil {
queue = append(queue, node.Left)
next++
}
if node.Right != nil {
queue = append(queue, node.Right)
next++
}
temp = append(temp, node.Val)
queue = queue[1:]
current--
}
level = append(level, temp)
current = next
next = 0
temp = make([]int, 0)
} // 注释见leetcode-102(https://juejin.cn/post/7002939568697638919)
for i := len(level)-1; i >= 0; i-- { // 倒序输出结果
res = append(res, level[i])
}
return res
}
补充说明:无