要求
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
示例 1:
输入:
3
/ \
9 20
/ \
15 7
输出:[3, 14.5, 11]
解释:
第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。
详细代码
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def averageOfLevels(self, root: Optional[TreeNode]) -> List[float]:
if not root:
return []
next_layer = [root.left,root.right]
result = [float(root.val)]
while next_layer:
temp_next_layer = []
layer_values = []
for node in next_layer:
if not node:
continue
temp_next_layer.append(node.left)
temp_next_layer.append(node.right)
layer_values.append(node.val)
next_layer = temp_next_layer
if layer_values:
result.append(sum(layer_values)/len(layer_values))
return result
解题思路:这个是树的层次遍历,和上一题树行最大值一样,进行层次遍历,得到一层的所有值,进行平均值计算即可。