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

力扣刷题——2265.统计值等于子树平均值的节点数

给你一棵二叉树的根节点 root ,找出并返回满足要求的节点数,要求节点的值等于其 子树 中值的 平均值 。

注意:

  • n 个元素的平均值可以由 n 个元素 求和 然后再除以 n ,并 向下舍入 到最近的整数。
  • root 的 子树 由 root 和它的所有后代组成。

示例 1:

输入:root = [4,8,5,0,1,null,6]
输出:5
解释:
对值为 4 的节点:子树的平均值 (4 + 8 + 5 + 0 + 1 + 6) / 6 = 24 / 6 = 4 。
对值为 5 的节点:子树的平均值 (5 + 6) / 2 = 11 / 2 = 5 。
对值为 0 的节点:子树的平均值 0 / 1 = 0 。
对值为 1 的节点:子树的平均值 1 / 1 = 1 。
对值为 6 的节点:子树的平均值 6 / 1 = 6 。

思路:

我们要得到当前节点的子节点的平均值,核心是在递归中记录当前节点的子节点数和它们值的和。可以利用pair,一次将两个值都放进去进行叠加, 最后进行/操作,判断结果是否等于当前节点的值。

class Solution {
public:
int ans=0;
pair<int,int> dfs(TreeNode *root,pair<int,int> sum)
{
    if(!root)
    {
        return {0,0};
    }
   auto lp=dfs(root->left,sum);
   auto lr=dfs(root->right,sum);
   sum.first+=lp.first+lr.first+root->val;
   sum.second+=lp.second+lr.second+1;
   if(sum.first/sum.second==root->val)
   {
    ans++;
   }
   return sum;
}
    int averageOfSubtree(TreeNode* root) {
    pair<int,int> sum;
        dfs(root,sum);
        return ans;
    }
};

相关文章:

  • 国产三维CAD皇冠CAD在机械制造行业建模教程:油泵
  • [ctfshow web入门] web28
  • 智能仓储数字孪生Demo(Unity实现)
  • AI大模型底层技术——Scaling Law
  • leetcode13.罗马数字转整数
  • 技术面试通关秘籍:常见问题解析+实战案例+避坑指南
  • Java 容器源码分析
  • Java全栈项目--校园快递管理与配送系统(5)
  • Wincc项目被锁定无法打开
  • 红宝书第三十二讲:零基础学会模块打包器:Webpack、Parcel、Rollup
  • 解决.net接口防暴力调用问题
  • 零基础教程:Windows电脑安装Linux系统(双系统/虚拟机)全攻略
  • 特权FPGA之Johnson移位
  • node-modules-inspector 使用以及 node_modules可视化 依赖关联关系快速分析
  • Java 为什么不支持多继承?
  • 多类型医疗自助终端智能化升级路径(代码版.下)
  • C++类与对象进阶知识深度解析
  • 基于大模型的ALS预测与手术优化系统技术方案
  • 用MSYS2在windows下编译gsl-2.8库用于vs2022调用
  • 打破系统壁垒:CRM、ERP、OA一体化如何重塑企业竞争力
  • 证券日报:降准今日正式落地,年内或还有降准空间
  • 商人运作亿元“茅台酒庞氏骗局”,俩客户自认受害人不服“从犯”判决提申诉
  • 男子不满和睦家医院手术效果还遇到了“冒牌医生”?院方回应
  • 跨文化戏剧的拓荒者与传承者——洪深与复旦剧社的百年回响
  • 经济日报整版聚焦:上海构建法治化营商环境,交出高分答卷
  • 英媒:英国首相住所起火,目前无人伤亡