题目:
给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。
算法:
层序遍历,nil节点不要入stack
func averageOfLevels(root *TreeNode) []float64 {
queue := make([]*TreeNode, 1)
ans := make([]float64, 0)
queue[0] = root
for len(queue) != 0 {
count := len(queue)
sum := 0
for i := 0; i < count; i ++ {
sum = sum + queue[i].Val
if queue[i].Left != nil {
queue = append(queue, queue[i].Left)
}
if queue[i].Right != nil {
queue = append(queue, queue[i].Right)
}
}
ans = append(ans, float64(sum)/ float64(count))
queue = queue[count:]
}
return ans
}