题目

给定一个二叉树,返回其按层次遍历的节点值。(即逐层地,从左到右访问所有节点)。

例如:

  1. 给定二叉树: [3,9,20,null,null,15,7],
  2. 3
  3. / \
  4. 9 20
  5. / \
  6. 15 7
  7. 返回其层次遍历结果:
  8. [
  9. [3],
  10. [9,20],
  11. [15,7]
  12. ]

方案一(广度优先搜索)

  1. /**
  2. * Definition for a binary tree node.
  3. * type TreeNode struct {
  4. * Val int
  5. * Left *TreeNode
  6. * Right *TreeNode
  7. * }
  8. */
  9. func levelOrder(root *TreeNode) [][]int {
  10. if root == nil {
  11. return [][]int{}
  12. }
  13. ret := [][]int{}
  14. queue := []*TreeNode{root}
  15. depth := -1
  16. for len(queue) > 0 {
  17. depth += 1
  18. length := len(queue)
  19. ret = append(ret, make([]int, 0, length))
  20. for i := 0; i < length; i++ {
  21. node := queue[0]
  22. queue = queue[1:]
  23. ret[depth] = append(ret[depth], node.Val)
  24. if node.Left != nil {queue = append(queue, node.Left)}
  25. if node.Right != nil {queue = append(queue, node.Right)}
  26. }
  27. }
  28. return ret
  29. }

原文

https://leetcode-cn.com/explore/learn/card/data-structure-binary-tree/2/traverse-a-tree/9/