方法一
思路:层次遍历,采用双层循环进行层次遍历,里面那层循环可以计算出每一层的和然后出来那层循环以后求平均值加入结果切片中
/*** 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{}}//层次遍历的时候每次遍历当前层的时候使用sum统计queue := []*TreeNode{root}//每一层的大小var length int//每一层的和var sum float64//结果数组ret := []float64{}for len(queue) != 0 {length = len(queue)sum = 0for i := 0; i < length; i++ {node := queue[0]queue = queue[1:]//加入左节点if node.Left != nil {queue = append(queue, node.Left)}//加入右节点if node.Right != nil {queue = append(queue, node.Right)}sum += float64(node.Val)}ret = append(ret, sum/float64(length))}return ret}
