1. 程式人生 > 其它 >[Leetcode]4.II. 從上到下列印二叉樹 II

[Leetcode]4.II. 從上到下列印二叉樹 II

題目:從上到下按層列印二叉樹,同一層的節點按從左到右的順序列印,每一層列印到一行。

例如:
給定二叉樹: [3,9,20,null,null,15,7],

3
/ \
9 20
/ \
15 7

返回其層次遍歷結果:

[

  [3],
  [9,20],
  [15,7]
]
思想:使用一個佇列儲存,每次遍歷佇列中的所有元素(即一層),使用temp臨時儲存子佇列,一層全部遍歷完後,陣列切換至下一行.
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func levelOrder(root *TreeNode) [][]int {
    var queue []*TreeNode
    var res [][]int 
    if root == nil {
        return res
    }
    queue = append(queue,root)
    var i int = 0
    for len(queue)!=0{
        temp :=  []*TreeNode{}
        res = append(res,[]int{})
        for _,v:=range queue{
            res[i]=append(res[i],v.Val)
            if v.Left != nil{
                temp = append(temp,v.Left)
            }
            if v.Right !=nil{
                temp = append(temp,v.Right)
            }
            queue = queue[0:0]
        }
        i++
        queue = temp
    }
    return res
}

題目來源;https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/