题目
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
输入:
3
/ \
9 20
/ \
15 7
输出:[3, 14.5, 11]
题解:
也就是遍历树结构,广度优先。
1,用一个数组,将第一层都装进去。
2,将此数组求平均值
3,用当前数组的每一个元素,获取下一层的元素,装入数组中。只切当前一层的元素
重复以上步骤
代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def averageOfLevels(self, root: TreeNode) -> List[float]:
head = root
level = [head]
res = []
while level:
sumLevel = 0
size = len(level)
for i in level:
if i:
sumLevel += i.val
res.append(float(sumLevel/size))
for i in level[:size]:
if i:
left = i.left
right = i.right
if left:
level.append(left)
if right:
level.append(right)
level = level[size:]
return res