1 class Solution: 2 def __init__(self): 3 self.maxAvg = 0 4 5 def preOrder(self,node): 6 if node == None: 7 return 0,0 8 if node.left == None and node.right == None: 9 self.maxAvg = max(self.maxAvg,node.val) 10 return 1,node.val 11 leftcount,leftsum,rightcount,rightsum = 0,0,0,0 12 if node.left != None: 13 leftcount,leftsum = self.preOrder(node.left) 14 if node.right != None: 15 rightcount,rightsum = self.preOrder(node.right) 16 totalcount = leftcount + rightcount + 1 17 totalsum = leftsum + rightsum + node.val 18 avg = totalsum / totalcount 19 self.maxAvg = max(self.maxAvg,avg) 20 return totalcount,totalsum 21 22 def maximumAverageSubtree(self, root: TreeNode) -> float: 23 self.preOrder(root) 24 return self.maxAvg
后序遍历,遍历的同时计算节点的数量、节点的和,并求平均值。
原文:https://www.cnblogs.com/asenyang/p/11182778.html