题目链接:508. 出现次数最多的子树元素和
计算每一个子树元素和,然后找到最多的那个。
# 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
class Solution:
def findFrequentTreeSum(self, root: TreeNode) -> List[int]:
anses = []
def do_sum(node: TreeNode) -> int:
if node is None:
return 0
ans = node.val + do_sum(node.left) + do_sum(node.right)
anses.append(ans)
return ans
do_sum(root)
ret, max_cnt = [], float('-inf')
for val, cnt in Counter(anses).items():
if cnt > max_cnt:
ret = [val]
max_cnt = cnt
elif cnt == max_cnt:
ret.append(val)
return ret