要實現二叉樹的層序遍歷,可以使用隊列來輔助實現。
首先,我們需要定義二叉樹的結構:
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
然后,我們可以使用隊列來輔助層序遍歷:
func levelOrder(root *TreeNode) [][]int {
if root == nil {
return [][]int{}
}
result := [][]int{}
queue := []*TreeNode{root}
for len(queue) > 0 {
levelSize := len(queue)
level := []int{}
for i := 0; i < levelSize; i++ {
node := queue[0]
queue = queue[1:]
level = append(level, node.Val)
if node.Left != nil {
queue = append(queue, node.Left)
}
if node.Right != nil {
queue = append(queue, node.Right)
}
}
result = append(result, level)
}
return result
}
該函數首先檢查根節點是否為空,如果為空則直接返回空的結果。
然后,我們創建一個隊列,并將根節點放入隊列中。
我們進入一個循環,直到隊列為空。在每次循環中,我們記錄當前隊列的大小,這樣我們就可以知道當前層級的節點數。
我們從隊列中取出當前層級的節點,并將其值加入到該層級的結果數組中。然后,我們將該節點的左右子節點加入到隊列中,以便下一層的遍歷。
最后,我們將該層級的結果數組加入到最終結果數組中。
最后,返回最終結果數組就是二叉樹的層序遍歷結果。
請注意,以上代碼僅提供了一種實現方式。在實際使用中,可能有不同的實現方式。