637 二叉树的层平均值-简单

题目:

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。

分析:

没啥好说的,就是算它。

// date 2023/10/25
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func averageOfLevels(root *TreeNode) []float64 {
    res := make([]float64, 0, 16)
    if root == nil {
        return res
    }

    queue := make([]*TreeNode, 0, 16)
    queue = append(queue, root)

    for len(queue) != 0 {
        n := len(queue)
        levelSum := 0
        for i := 0; i < n; i++ {
            cur := queue[i]

            levelSum += cur.Val

            if cur.Left != nil {
                queue = append(queue, cur.Left)
            }
            if cur.Right != nil {
                queue = append(queue, cur.Right)
            }
        }
        res = append(res, float64(levelSum) / float64(n))

        queue = queue[n:]
    }

    return res
}

最后更新于