LeetCode637. 二叉树的层平均值Golang版
1. 问题描述
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
示例 1:
输入:
3
/
9 20
/
15 7
输出:[3, 14.5, 11]
解释:
第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。
提示:
节点值的范围在32位有符号整数范围内。
2. 思路
二叉树层序遍历,计算每一层平均值
3. 代码
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func averageOfLevels(root *TreeNode) []float64 {
var res []float64
if root == nil {
return res
}
queue := []*TreeNode{root}
for len(queue) > 0 {
length := len(queue)
var sum int
for i := 0; i < length; i++ {
if queue[0].Left != nil {
queue = append(queue, queue[0].Left)
}
if queue[0].Right != nil {
queue = append(queue, queue[0].Right)
}
sum += queue[0].Val
queue = queue[1:]
}
res = append(res, float64(sum) / float64(length))
}
return res
}