给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.
示例 1:
输入: 3 / \ 9 20 / \ 15 7 输出: [3, 14.5, 11] 解释: 第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].
思路:
把每一层的所有节点的值放在一个数组里,再计算这个数组的均值加到result数组里即可。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def averageOfLevels(self, root):
"""
:type root: TreeNode
:rtype: List[float]
"""
if not root:
return []
next_layer = [root.left, root.right]
result = [float(root.val)]
while(next_layer):
temp_next_layer = list()
layer_value = list()
for node in next_layer:
if not node:
continue
temp_next_layer.append(node.left)
temp_next_layer.append(node.right)
layer_value.append(node.val)
if layer_value:
result.append(sum(layer_value) / float(len(layer_value)))
next_layer = temp_next_layer
return result