Leetcode 508. Most Frequent Subtree Sum (二叉树后序遍历好题)

团体程序设计天梯赛竞赛题--登顶题【L3-042 污染大亨】 登顶级 3 道题,每道题 30 分,满分为 90 分。 阅读详情
  1. Most Frequent Subtree Sum
    Solved
    Medium
    Topics
    Companies
    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).

Example 1:

Input: root = [5,2,-3]
Output: [2,-3,4]
Example 2:

Input: root = [5,2,-5]
Output: [2]

Constraints:

The number of nodes in the tree is in the range [1, 104].
-105 <= Node.val <= 105

解法1:用后序遍历!

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector<int> findFrequentTreeSum(TreeNode* root) {
        helper(root);
        vector<int> res;        
        for (auto elem: um) {
            if (maxFreq == elem.second) {
                res.push_back(elem.first);
            }
        }
        return res;
    }
private:
    map<int, int> um; //<sum, freq>
    int maxFreq = 0;
    int helper(TreeNode* root) {
        if (!root) return 0;
        int left = helper(root->left);
        int right = helper(root->right);
        int sum = left + right + root->val;

        um[sum]++;
        if (maxFreq < um[sum]) {
            maxFreq = um[sum];
        }
        return sum;
    }
};
2025.05.29【Network】多组学分析:网络互作图绘制 本文介绍了使用R语言进行网络图绘制的方法与技巧。重点讲解了三个核心R包的使用:igraph用于网络图数据准备与基础绘制,ggraph基于图形语法实现高级可视化,networkD3则为网络图添加交互功能。文章涵盖了从基本概念、包安装、创建网络图对象,到自定义样式布局、添加交互性等完整流程,并提供了度分布、聚类系数等网络分析指标的计算方法。通过清晰的代码示例,帮助读者掌握生物信息学数据可视化的关键技能,为复杂数据的直观展示和分析提供实用工具。 阅读详情

相关推荐

海康视觉平台VisionMaster实战入门:从通讯配置到工具应用

本文为海康VisionMaster视觉平台实战入门指南,详细介绍了从软件安装准备、与PLC等外部设备的通讯配置,到匹配定位、测量、畸变矫正等核心工具的应用方法。通过实战案例拆解,帮助工程师快速掌握如何搭建完整的机器视觉检测与引导定位系统,实现工业自动化项目落地。

weixin_29224309的博客 1006

[leetcode]508. Most Frequent Subtree Sum(Python)

[leetcode]508. Most Frequent Subtree Sum题目描述题目理解解题思路后序遍历+递归MyMethodTime 题目描述 Category:Medium Tree Given the root of a tree, you are asked to find the most frequent subtree sum. The subtree sum of a n...

La_Ragazza的博客 358

Python学习(一)

快速入门 1.Linux系统中是可以直接使用Python进行编程,具体如下: 进入Python:在linux的Terminal中输入 Python ,进入Python的命令行; 退出Python:在linux的Terminal中输入quit() 或 exit() 或 ctrl +d ,再回车,退出Python的命令行。 2.python的源程序就是一个特殊格式的文本文件,可以使用任意文本编辑软件做Python的开发。 3.Python程序的文件扩展名通常都是 .py。 4.执行Python程序的方式:在

SummerXRT的博客 1278

[LeetCode]508. Most Frequent Subtree Sum

[LeetCode]508. Most Frequent Subtree Sum题目描述思路递归,保存每次的和到map中,同时计算和最多出现的次数 思路简单,回顾树的操作代码#include <iostream> #include <vector> #include <unordered_map> using namespace std; struct TreeNode { int v

Lcharon的博客 4133

基于4G cat.1的低功耗车牌识别摄像头模组介绍

在消费类摄像头领域,4G低功耗相机已经非常普遍,在可视门锁,婴儿看护,户外监控等领域都获得了很好的应用.但是在工业领域,低功耗相机的应用还不是那么广泛.这里要介绍一款基于4G cat.1的低功耗车牌识别摄像头模组,在待机状态只有MCU和毫米波雷达以1Hz的频率工作,功耗低至500uA,并可以通过4G模块远程唤醒模组.

bindaz的专栏 1647

openEuler在虚拟机的网络配置

ethernet0.virtualDev 可以配置成其他类型的虚拟网络适配器。常见的选项包括:vlance - 用于模拟 AMD PCnet32 LANCE 网络适配器,支持10Mbps。e1000 - 用于模拟 Intel E1000 千兆网络适配器,支持1Gbps。e1000e - 用于模拟更现代的 Intel E1000e 千兆网络适配器。vmxnet - 用于 VMware 的自定义网络适配器,性能更好但需要安装 VMware Tools。

FHY1221的博客 2930

LeetCode 508. Most Frequent Subtree Sum

508. Most Frequent Subtree Sum Given the root of a tree, you are asked to find the most frequent subtree sum. The subtree sum of a node is defined as the sum of all the node values formed by the subt

柳婼 の blog 1919

图生文【学习中】

图生文:提供图像,把图像对应的信息用文本描述出来

qq_19072921的博客 1787

508. Most Frequent Subtree Sum**

508. Most Frequent Subtree Sum** https://leetcode.com/problems/most-frequent-subtree-sum/ 题目描述 Given the root of a tree, you are asked to find the most frequent subtree sum. The subtree sum of a node ...

珍妮的选择的博客 282

ARM 汇编指令:LSL(逻辑左移) 和 LSR(逻辑右移)

ARM 汇编中的 LSL(逻辑左移)和 LSR(逻辑右移)是基础移位指令,分别实现二进制位的左移和右移操作。LSL 低位补0,等效于乘以2^n;LSR 高位补0,等效于无符号除以2^n。这两个指令可以单独使用或与其他指令结合(如ADD、MOV等),利用ARM的"桶形移位器"硬件实现高效运算。关键特性包括:移位范围0-31(LSL)或1-32(LSR),可选更新标志位,以及与其他指令结合时的无额外开销优势。LSR与ASR(算术右移)的主要区别在于高位填充方式,分别适用于无符号和有符号数处理

guigenyi的专栏 1810

STM32入门教程:WiFi通信

第四步:初始化串口 在生成的代码中,您可以找到一个名为 "USARTx_Init" 的函数,其中 "x" 是您选择的串口号。然后,我们使用 "AT+CIPSEND" 命令发送UDP数据,接收到服务器的回复,并在终端上显示收到的数据。在配置向导中,您可以选择启用USART串口功能,并根据您的硬件连接,将串口设置为与WiFi模块连接的串口。在上述代码中,我们使用了 "HAL_UART_Receive" 函数来接收串口数据,并使用 printf 来在终端上显示收到的数据。如果有任何问题,请随时向我提问。

2401_85258012的博客 1073

LeetCode笔记:508. Most Frequent Subtree Sum

找到二叉树所有节点的子树和中出现频率最高的子树和集合

Minecraft 2294

倾斜摄影数据转换为3DTile格式的方法:基于CesiumLab GIS

通过使用CesiumLab GIS,倾斜摄影数据可以方便地转换为3DTile格式,并在CesiumJS等3D地理信息可视化工具中进行展示和分析。一旦成功导入3DTile数据,就可以在CesiumLab GIS中利用其强大的可视化和分析功能进行进一步的处理。转换完成后,可以将生成的3DTile数据导入到CesiumLab GIS中进行可视化和分析。启动CesiumLab GIS应用程序,并按照界面上的指导导入转换后的3DTile数据。脚本将开始执行,并将倾斜摄影数据转换为3DTile格式。

ObDjango的博客 1075

leetcode 508. Most Frequent Subtree Sum

Given the root of a tree, you are asked to find the most frequent subtree sum. The subtree sum of a node is defined as the sum of all the node values formed by the subtree rooted at that node (includi

淡然坊 405

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

[LeetCode] 508. Most Frequent Subtree Sum

Most Frequent Subtree Sum Given the root of a tree, you are asked to find the most frequent subtree sum. The subtree sum of a node is defined as the sum of all the node values formed by the subtree ro...

Peng_maple的博客 743

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

leetcode 508 Most Frequent Subtree Sum C++

这道题我用后序遍历把所有子树和都放在一个map里面保存,然后找到最大的次数并输出即可。 map m; int houxu(TreeNode *root) { if (!root) return 0; int sum = root -> val; sum += houxu(root->left); sum += hou

wcxdell的专栏 385

【Leetcode508】Most Frequent Subtree Sum题解

一、题目描述 给定一个二叉树的根节点,定义二叉树中的子树和为该子树中所有节点值的和。二叉树中每一个节点都可以为子树根节点,所得子树和也包括该节点,输出所给二叉树中出现频率最高的子树和值,若存在连个或者多个值出现频率相同且最高,则将其以任意顺序输出。 二、思路解析 二叉树中每一个节点都对应一棵子树,因此每一个节点也对应一个子树和的值。这题可分为两个过程解决,第一步是求出所给二叉树中每一个节点所

codekiller_的博客 390

LeetCode 508. Most Frequent Subtree Sum - 二叉树系列题24

一棵二叉树,以它的每一个节点为根节点构成一棵棵子树,每棵子树的所有节点值的和叫做子树和,不同子树的子树和有可能相同,现在要求找出出现频率最高的所有子树和。 暴力解法就是以每个节点为根节点求出它们对应子树的和,同时统计每个子树和出现的次数,从而找出出现次数最多的所有子树和。然而,如果每次都重复计算每棵子树的和,将耗费太多时间做重复计算

hgq522的博客 517

Leetcode 508.出现次数最多的子树元素和(Most Frequent Subtree Sum)

Leetcode 508.出现次数最多的子树元素和 1 题目描述(Leetcode题目链接)   给你一个二叉树的根结点,请你找出出现次数最多的子树元素和。一个结点的「子树元素和」定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。 你需要返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。 5 / \ 2 -3 返回...

qq_39378221的博客 248

【LeetCode】508. Most Frequent Subtree Sum【M】【40】

Given the root of a tree, you are asked to find the most frequent subtree sum. The subtree sum of a node is defined as the sum of all the node values formed by the subtree rooted at that node (includi

sscssz的博客 620

leetcode508 Most Frequent Subtree Sum Java

1、自己写的 感觉代码好臃肿~~~  递归得到每个节点的Subtree Sum,存放到list中。 在对list进行处理时,先用map存list中出现的值以及出现次数,最后遍历map的value得到出现次数最多的值。 List list = new ArrayList<>();//存放每一个节点的SubtreeSum public int[] findFrequentTreeSum(Tre

店小不二的博客 385

Leetcode-508. Most Frequent Subtree Sum

前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发优快云,mcf171专栏。 博客链接:mcf171的博客 —————————————————————————————— Given the root of a tree, you are

mcf171的专栏 1839

Leetcode 508. Most Frequent Subtree Sum

递归. 注意:collections.Counter()有一个most_common()函数,比较实用. # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # ...

weixin_30663471的博客 70

【Leetcode】508. Most Frequent Subtree Sum

题目地址: https://leetcode.com/problems/most-frequent-subtree-sum/ 给定一棵二叉树,求其出现最多次的子树和是那些。 思路是DFS,每次求出一个子树和之后就存入哈希表计数,最后找一下出现次数最多的子树和有哪些即可。代码如下: import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class So

数学、算法爱好者的博客 187

leetcode 508. Most Frequent Subtree Sum 出现次数最多的子树元素和

本文解决 LeetCode 508 题,要求找出二叉树中出现次数最多的子树元素和。采用递归方法计算每个子树的和,使用哈希表统计各和的出现次数。维护最大值和结果列表,当遇到更大频次时清空列表,相同频次时加入新值。算法时间复杂度为 O(n),空间复杂度为 O(n)。核心是后序遍历计算子树和,并动态更新最高频次的结果。

邹九的个人博客 261

[Swift]LeetCode508. 出现次数最多的子树元素和 | Most Frequent Subtree Sum

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://www.cnblogs.com/streng...

weixin_30367945的博客 148
上一篇: LintCode 650 · Find Leaves of Binary Tree (binary tree 后序遍历非常好的题目!)
下一篇: Leetcode 563. Binary Tree Tilt (二叉树后序遍历好题)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值