leetcode-637. 二叉树的层平均值

637. 二叉树的层平均值 - 力扣(Leetcode)

层次遍历+求平均值,Go中的切片也可以模拟queue的功能

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func averageOfLevels(root *TreeNode) []float64 {
    queue := []*TreeNode{root}

    avgList := []float64{}
    for len(queue) > 0 {

        sum := 0
        lenQ := len(queue)
        for i := 0; i < lenQ; i++ {
            sum += queue[i].Val
            if queue[i].Left != nil {
                queue = append(queue, queue[i].Left)
            }
            if queue[i].Right != nil {
                queue = append(queue, queue[i].Right)
            }
        }
        // fmt.Println(sum, lenQ)
        avgList = append(avgList, float64(sum)/float64(lenQ))

        queue = queue[lenQ:]
    }

    return avgList
}
posted @ 2023-01-03 13:43  吴丹阳-V  阅读(26)  评论(0)    收藏  举报