【Python】Leetcode提交例子

【参考:508. 出现次数最多的子树元素和 - 力扣(LeetCode)

像类一样写变量和函数

# 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 __init__(self):
        self.cnt=Counter()

    def findFrequentTreeSum(self, root: TreeNode) -> List[int]:
        self.dfs(root)
        maxNum=max(self.cnt.values())
        res=[k for k,v in self.cnt.items() if v==maxNum ]
        return res

    def dfs(self,root):
        if root is None:return 0
        left=self.dfs(root.left)
        right=self.dfs(root.right)
        he= root.val + left + right
        self.cnt[he]+=1
        return he
    

把需要的函数写在函数内部

class Solution:
    def findFrequentTreeSum(self, root: TreeNode) -> List[int]:
    
        cnt = Counter()
        
        def dfs(node: TreeNode) -> int:
            if node is None:
                return 0
            sum = node.val + dfs(node.left) + dfs(node.right)
            cnt[sum] += 1
            return sum
            
        dfs(root) # 在函数下方调用

        maxCnt = max(cnt.values())
        return [s for s, c in cnt.items() if c == maxCnt]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值