LeetCode知识点总结 - 508

此篇博客介绍了如何解决LeetCode中的508题,通过深度优先搜索遍历二叉树,并利用哈希表统计每个子树和出现的频率。重点在于DFS算法的应用以及如何找到最频繁的子树和。适合想要提升动态规划和数据结构技巧的开发者阅读。
摘要由CSDN通过智能技术生成

LeetCode 508. Most Frequent Subtree Sum

考点难度
DFSMedium
题目

Given the root of a binary tree, return the most frequent subtree sum. If there is a tie, return all the values with the highest frequency in any order.

The subtree sum of a node is defined as the sum of all the node values formed by the subtree rooted at that node (including the node itself).

思路

用hashmap储存sum出现的次数,DFS所有subtree

答案
class Solution:
    def findFrequentTreeSum(self, root):
        if root is None: return []

        def dfs(node):
            if node is None: return 0
            s = node.val + dfs(node.left) + dfs(node.right)
            count[s] += 1
            return s

        count = collections.Counter()
        dfs(root)
        maxCount = max(count.values())
        return [s for s in count if count[s] == maxCount]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值