637. 二叉树的层平均值 简单
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
示例 1:
输入:
3
/ \
9 20
/ \
15 7
输出:[3, 14.5, 11]
解释:
第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。
提示:
节点值的范围在32位有符号整数范围内。
代码参考:
package main
import "fmt"
func main() {
root := &TreeNode{
Val: 3,
Left: &TreeNode{Val: 9},
Right: &TreeNode{Val: 20},
}
fmt.Println(averageOfLevels(root)) // [3 14.5]
}
// 层序遍历即可
func averageOfLevels(root *TreeNode) []float64 {
if root == nil {
return nil
}
var avgs []float64
q := []*TreeNode{root}
for len(q) > 0 {
count := len(q)
sum := 0
for i := 0; i < count; i++ {
cur := q[0]
q = q[1:]
sum += cur.Val
if cur.Left != nil {
q = append(q, cur.Left)
}
if cur.Right != nil {
q = append(q, cur.Right)
}
}
avgs = append(avgs, float64(sum)/float64(count))
}
return avgs
}
最后编辑: kuteng 文档更新时间: 2021-06-05 10:16 作者:kuteng