637.二叉树的层平均值

65 阅读1分钟

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