剑指 Offer 32 - I. 从上到下打印二叉树
剑指 Offer 32 - II. 从上到下打印二叉树 II
和力扣102. 二叉树的层序遍历,107. 二叉树的层序遍历 II类似
//BFS 分层打印【【1】,【2,3】】
func levelOrder(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) // + xxx 就倒序输出了
}
return levels
}
//BFS 排成一排打印:[1, 2, 3]
func levelOrder(root *TreeNode) []int {
if root == nil {
return nil
}
levels := []int{}
queue := []*TreeNode{root}
for len(queue) > 0 {
root = queue[0]
queue = queue[1 :]
if root.Left != nil {
queue = append(queue, root.Left)
}
if root.Right != nil {
queue = append(queue, root.Right)
}
levels = append(levels, root.Val)
}
return levels
}