中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

golang二叉樹層序遍歷怎么實現

小億
96
2023-11-22 03:01:09
欄目: 編程語言

要實現二叉樹的層序遍歷,可以使用隊列來輔助實現。

首先,我們需要定義二叉樹的結構:

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
}

該函數首先檢查根節點是否為空,如果為空則直接返回空的結果。

然后,我們創建一個隊列,并將根節點放入隊列中。

我們進入一個循環,直到隊列為空。在每次循環中,我們記錄當前隊列的大小,這樣我們就可以知道當前層級的節點數。

我們從隊列中取出當前層級的節點,并將其值加入到該層級的結果數組中。然后,我們將該節點的左右子節點加入到隊列中,以便下一層的遍歷。

最后,我們將該層級的結果數組加入到最終結果數組中。

最后,返回最終結果數組就是二叉樹的層序遍歷結果。

請注意,以上代碼僅提供了一種實現方式。在實際使用中,可能有不同的實現方式。

0
巴马| 贵南县| 通州市| 信阳市| 建湖县| 西城区| 瑞丽市| 唐河县| 谢通门县| 延安市| 仙居县| 镇巴县| 象山县| 壶关县| 宿松县| 孝感市| 富平县| 眉山市| 闻喜县| 土默特左旗| 阳曲县| 邢台市| 苗栗县| 伊金霍洛旗| 白水县| 新绛县| 商水县| 兴文县| 东安县| 平定县| 永靖县| 宜兰市| 丰城市| 互助| 上杭县| 安图县| 广河县| 米易县| 玉环县| 茶陵县| 高台县|