# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right
classSolution: defmaxProduct(self, root: Optional[TreeNode]) -> int: mod = 10**9 + 7 co_sum = [] defdfs(node): if node isNone: return0 # 后序遍历:计算以当前节点为根的子树和 co = node.val + dfs(node.left) + dfs(node.right) co_sum.append(co) return co total = dfs(root) # 获取整棵树的总和 # 遍历所有可能的子树和,找出最大乘积 ans = max(num * (total - num) for num in co_sum) return ans % mod ````