class TreeNode:<br> def __init__(<a href="https://www.gaodaima.com/tag/self" title="查看更多关于self的文章" target="_blank">self</a>, x):<br> self.val = x<br> self.left = None<br> self.right = None<br># 这道题还是很容易的,还是用深搜的办法,遍历每<a href="https://www.gaodaima.com/tag/%e4%b8%80%e5%b1%82" title="查看更多关于一层的文章" target="_blank">一层</a>,定义两个列表,<br># 一个用来计算每一层的和,另一个用来记每一层的个数。<br>from typing import List<br>class Solution:<br> def averageOfLevels(self, root: TreeNode) -> List[float]:<br> # 定义两个列表<br> self.rep = []<br> self.count = []<br> self.dfs(root,0)<br> # 求出每一层的平均值。<br> for i in range(len(self.rep)):<br> self.rep[i] = self.rep[i] / self.count[i]<br> return self.rep<br> # 定义递归函数<br> def dfs(self,root,depth):<br> # 如果节点为空,直接返回。<br> if not root:<br> return<br> # 这里判断的是函数是否是第一次走到这一层,<br> if len(self.rep) <= depth:<br> # 第一次的话需要先进行在列表中添加一个数据<br> self.rep.append(root.val)<br> self.count.append(1)<br> else:<br> # 不是第一次进入这一层的话,就在原有的基础上边加上对应的数。<br> self.rep[depth] += root.val<br> self.count[depth] += 1 <br> self.dfs(root.left,depth + 1)<br> self.dfs(root.right,depth + 1)<br><br>
www#gaodaima.com来源gao!%daima.com搞$代*!码$网搞代码