给定一个非空二叉树的根节点
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))
}