1. 程式人生 > 實用技巧 >637二叉樹的層平均值

637二叉樹的層平均值

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)