class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
# 这道题还是很容易的,还是用深搜的办法,遍历每一层,定义两个列表,
# 一个用来计算每一层的和,另一个用来记每一层的个数。
from typing import List
class Solution:
def averageOfLevels(self, root: TreeNode) -> List[float]:
# 定义两个列表
self.rep = []
self.count = []
self.dfs(root,0)
# 求出每一层的平均值。
for i in range(len(self.rep)):
self.rep[i] = self.rep[i] / self.count[i]
return self.rep
# 定义递归函数
def dfs(self,root,depth):
# 如果节点为空,直接返回。
if not root:
return
# 这里判断的是函数是否是第一次走到这一层,
if len(self.rep) <= depth:
# 第一次的话需要先进行在列表中添加一个数据
self.rep.append(root.val)
self.count.append(1)
else:
# 不是第一次进入这一层的话,就在原有的基础上边加上对应的数。
self.rep[depth] += root.val
self.count[depth] += 1
self.dfs(root.left,depth + 1)
self.dfs(root.right,depth + 1)