給定一個 binary tree root ,以 level order traversal 的順序走訪所有 nodes 的 value. ([][]int in Go)
相當單純的題目,照課本來(???)就好了
可能有差異的部份是怎麼「分隔」不同的 level ,早期我是建立了兩個 queue : nextLevelQueue and currLevelQueue ,後來發現可以再簡化成用一個單純的 loop 搞定如下
func levelOrder(root *TreeNode) [][]int {
result := [][]int{}
if root == nil {
return result
}
queue := []*TreeNode{root}
for len(queue) > 0 {
levelSize := len(queue)
levelVals := []int{}
for range levelSize {
curr := queue[0]
queue = queue[1:]
levelVals = append(levelVals, curr.Val)
if curr.Left != nil {
queue = append(queue, curr.Left)
}
if curr.Right != nil {
queue = append(queue, curr.Right)
}
}
result = append(result, levelVals)
}
return result
}