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

46 阅读1分钟

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

输入: root = [3,9,20,null,null,15,7]
输出: [[3],[9,20],[15,7]]

第一种解法

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func averageOfLevels(root *TreeNode) []float64 {
    if root == nil {
        return []float64{float64(0)}
    }
    var res []float64
    queue := []*TreeNode{root}
    for len(queue) > 0 {
        var (
            n = len(queue)
            tmp []int
        )
        for i := 0; i < n; i++ {
            node := queue[0]
            queue = queue[1:]
            tmp = append(tmp, node.Val)
            if node.Left != nil {
                queue = append(queue, node.Left)
            }
            if node.Right != nil {
                queue = append(queue, node.Right)
            }
        }
        res = append(res, t(tmp))
    }
    return res
}

func t(tmp []int) float64 {
    var res int
    for _, v := range tmp {
        res += v
    }
    return float64(res) / float64(len(tmp))
}