剑指 Offer 32 - I. 从上到下打印二叉树

剑指 Offer 32 - II. 从上到下打印二叉树 II

和力扣102. 二叉树的层序遍历107. 二叉树的层序遍历 II类似

  1. //BFS 分层打印【【1】,【2,3】】
  2. func levelOrder(root *TreeNode) [][]int {
  3. if root == nil {
  4. return nil
  5. }
  6. levels := [][]int{}
  7. queue := []*TreeNode{root}
  8. for len(queue) > 0 {
  9. n := len(queue)
  10. level_tmp := []int{}
  11. for i := 0; i < n; i++ {
  12. root = queue[0]
  13. queue = queue[1 :]
  14. level_tmp = append(level_tmp, root.Val)
  15. if root.Left != nil {
  16. queue = append(queue, root.Left)
  17. }
  18. if root.Right != nil {
  19. queue = append(queue, root.Right)
  20. }
  21. }
  22. levels = append(levels, level_tmp) // + xxx 就倒序输出了
  23. }
  24. return levels
  25. }
//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
}