题目
难度:★★☆☆☆
类型:树
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.
注意:节点值的范围在32位有符号整数范围内。
示例
输入:
3
/ \
9 20
/ \
15 7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].
解答
这道题实际上是二叉树的层次遍历,计算每一层的结点均值即可。
class Solution:
def averageOfLevels(self, root):
if not root:
return [] # 如果输入空树,直接返回空列表
cur_layer = [root] # 根节点放进当前层列表
res = [] # 结果列表,存放各层均值
while cur_layer: # 当前层不为空时,执行
# 将当前层结点平均值添加到结果中
res.append(sum(node.val for node in cur_layer) / len(cur_layer))
next_layer = [] # 当前层结点列表初始化为空
for node in cur_layer: # 遍历上一层结点列表中的各个结点
if node.left: # 如果存在左子树
next_layer.append(node.left) # 添加左孩子到下一层列表
if node.right: # 如果存在右子树
next_layer.append(node.right) # 添加右孩子到下一层列表
cur_layer = next_layer # 更新上一层结点列表
return res # 返回结果列表
如有疑问或建议,欢迎评论区留言~