当前位置: 首页 > news >正文

力扣刷题——508.出现次数最多的子树和

给你一个二叉树的根结点 root ,请返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。

一个结点的 「子树元素和」 定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。

示例 1:

输入: root = [5,2,-3]
输出: [2,-3,4]

读懂题
 

举例大一点的树,如这样一颗树:

      5
     / \
    2   -3
   / \
  4   -1
子树和会计算为:

5的子树和: 5 + 2 + 4 + (-1) + (-3) = 7
2的子树和: 2 + 4 + (-1) = 5
-3的子树和:-3
4的子树和: 4
-1的子树和:-1
输出将是所有子树和,因为它们都出现一次,返回 [7, 5, -3, 4, -1]。

class Solution {
public:
unordered_map<int,int> mp;
int maxcount=0;
int  dfs(TreeNode *root)
{
    if(!root)
    {
        return 0;
    }
    
    
    int leftSum=dfs(root->left);
    int rightSum=dfs(root->right);
    int num = root->val + leftSum + rightSum;
    mp[num]++;
    maxcount=max(mp[num],maxcount);
    return num;
}
    vector<int> findFrequentTreeSum(TreeNode* root) {
        vector<int> res;
        dfs(root);
        for(auto &[s,c]:mp)
        {
            if(c==maxcount)
            {
                res.push_back(s);
            }
        }
        return res;
    }
};

http://www.dtcms.com/a/113625.html

相关文章:

  • Docker存储策略深度解析:临时文件 vs 持久化存储选型指南
  • 每日算法-250405
  • 4. 面向对象程序设计
  • 分布式事务解决方案全解析:从经典模式到现代实践
  • 每天五分钟深度学习框架pytorch:搭建LSTM完成手写字体识别任务?
  • 深入探索 Linux Top 命令:15 个实用示例
  • python中的sort使用
  • 在 macOS 上安装和配置 Aria2 的详细步骤
  • 【数学建模】(时间序列模型)ARIMA时间序列模型
  • tomcat的web三大组件Sciidea搭建web/maven的tomcat项目
  • grep命令: 过滤
  • 基于STM32与应变片的协作机械臂力反馈控制系统设计与实现----2.2 机械臂控制系统硬件架构设计
  • 自托管本地图像压缩器Mazanoke
  • (三)链式工作流构建——打造智能对话的强大引擎
  • 5天速成ai agent智能体camel-ai之第1天:camel-ai安装和智能体交流消息讲解(附源码,零基础可学习运行)
  • linux专题3-----linux上链接远程mysql
  • 深入理解Python元组:从基础到高级应用
  • xss攻击
  • NDK开发:开发环境
  • 2025-04-05 吴恩达机器学习4——逻辑回归(1):基础入门
  • 华为高斯(GaussDB)数据库中 Range、List、Hash三种分区方式 的完整SQL示例及增删改查操作,并附上总结对比表格
  • Linux内核引导内存分配器原理
  • 金仓数据库KCM认证考试介绍【2025年4月更新】
  • PgVectore的使用
  • REASONING THOUGHT和REASONING分别是什么意思,有什么区别
  • C语言:字符串
  • Baklib企业CMS的核心要素是什么?
  • 贪心算法之最小生成树问题
  • Sentinel实战(五)、系统保护规则、限流后统一处理及sentinel持久化配置
  • 多GPU训练