Skip to content

Latest commit

 

History

History
33 lines (32 loc) · 925 Bytes

剑指offer32-2从上到下打印二叉树.md

File metadata and controls

33 lines (32 loc) · 925 Bytes
func levelOrder(root *TreeNode) [][]int {
    if root == nil {
      return [][]int{}
    }
  	var res [][]int
    //利用队列
    queue := []*TreeNode{root}
 	 	level := 0
    for len(queue) != 0 {
        //利用临时队列,暂存每个节点的左右子树
        temp := []*TreeNode{} 
        //只需考虑在同一层上追加元素
        res = append(res,[]int{})
        //遍历队列,追加队列元素到切片同一层,追加队列元素左右子树到临时队列
        for _,v := range queue {
            res[level] = append(res[level],v.Val)
            if v.Left != nil {
                temp = append(temp,v.Left)
            }
            if v.Right != nil{
                temp = append(temp,v.Right)
            }
        }
        //层级加1,队列重新复制为队列的左右子树集
        level++
        //队列赋值
        queue = temp
    }
    return res
}