首页 > 其他分享 >2023.7.14 在二叉树中分配硬币

2023.7.14 在二叉树中分配硬币

时间:2023-07-14 21:24:03浏览次数:39  
标签:结点 return 14 硬币 int dfs second 2023.7 二叉树

image

借用灵神的图:
image

所以一个直观的想法就是,计算这个子树的硬币个数和节点个数的差的绝对值。这个就是需要传递给父结点的硬币数量。
如果这个子树中的子结点也全部执行了这个操作,那么就会把硬币全部集中到当前结点,因此不用考虑子结点中的移动。所以这是个递归算法。(因为要先完成子结点的)

class Solution 
{
public:
    using PII = pair<int, int>;

    int res = 0;
    PII dfs(TreeNode *u)
    {
        if (u) 
        {
            auto l = dfs(u->left), r = dfs(u->right);
            PII data = {l.first + r.first, l.second + r.second};
            int coins = data.first + u->val;
            int nodes = data.second + 1;

            res += abs(coins - nodes);
            return {coins, nodes};
        }
        return {0, 0};
    }

    int distributeCoins(TreeNode* root) 
    {
        dfs(root);
        return res;
    }
};

标签:结点,return,14,硬币,int,dfs,second,2023.7,二叉树
From: https://www.cnblogs.com/st0rmKR/p/17555006.html

相关文章

  • 日常疑难 —— 2023年7月14日
    每日疑难——2023年7月14日证明复数形式的Lagrange等式:\[\vert\sum_{j=1}^nz_jw_j\vert^2=\left(\sum_{j=1}^n\vertz_j\vert^2\right)\left(\sum_{j=1}^n\vertw_j\vert^2\right)-\sum_{1\leqslantj<k\leqslantn}\vertz_j\overline{w}_k-z_k\overlin......
  • 2023.7.14
    12023.7.14周五2//递归:适用于基数bi'ji3publicclasstest4{5publicstaticvoidmain(String[]args)6{78System.out.println(f(5));9}10publicstaticintf(intn)11{12if(n==1)13{14......
  • 假期集训7.14
    页面布局1.盒子模型<div>2表格,表单表格表单标签表单项JavaScript1.js的引入方式2.js的基础语法let为局部变量,只在代码块生效const定义后为常量不可改变3.数据类型运算符和类型转换*字符串转为数字时会从前往后把能转为数字的部分转为数字函数......
  • 2023.7.14
    原本应该从7.10学校放暑假就开始记录的,但是之前因为一些原因没有开始。前两天主要是把之前学的pwn的相关内容复习了一下,因为在学校最后一段时间忙着备考英语六级和期末考,有几周没动网安相关的东西,有点遗忘了。从基本的栈溢出开始,基础rop的ret2text、ret2shellcode、ret2syscall......
  • 7-14打卡
    Java抽象类abstractclassShape{abstractdoublecalculateArea();//抽象方法}classRectangleextendsShape{privatedoublelength;privatedoublewidth;Rectangle(doublelength,doublewidth){this.length=length;this......
  • C/C++学生宿舍管理系统[2023-07-14]
    C/C++学生宿舍管理系统[2023-07-14]课程名称:程序设计实践专业班级:学生姓名:学号:任课教师:张闻强学期:2022-2023学年第2学期课程报告任务书题目 学生宿舍管理系统主要内容 用C语言开发一个简单的学生宿舍管理系统。实现宿舍......
  • 每日总结2023年7月14日
    今日学习:完全图的概念,有向完全图和无向完全图。邻接矩阵的概念,邻接矩阵怎么画。邻接表怎么存储图的信息;图的遍历:深度优先、广度优先;拓扑排序:把有向边表示活动开始的先后关系。这种有向图称为用顶点表示活动网咯,成为AOE网络;图的最小生成树(普利姆算法Prime);明天的计划:把图和基础算法......
  • 7.14
    在Java中,使用{}括起来的代码被称为代码块(Codeblock),根据其位置和声明的不同,可以分为:局部代码块,构造代码块,同步代码块,静态代码块。静态代码块:在类加载JVM时初始化,且只被执行一次;常用来执行类属性的初始化;静态块优先于各种代码块以及构造函数;此外静态代码块不能访问普通变量。构......
  • 行业追踪,2023-07-14,汽车零部件在反弹时已清仓,耐心等待第二波买点重现
    自动复盘2023-07-14凡所有相,皆是虚妄。若见诸相非相,即见如来。k线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让市场来告诉你工--号:醉卧梦星河欧奈尔行业RPS排名天天更新追踪主力行业......
  • 20230714练习总结
    LOJ3686/JOISC2022DAY1京都观光考虑从\((x1,y1)\)只转一次弯到\((x2,y2)\)。先向南走当且仅当:\[\boxed{\frac{a_{x1}-a_{x2}}{x1-x2}<\frac{b_{y1}-b_{y2}}{y1-y2}}\]很容易想到斜率相关。但是如果只是对比两行,因为有列的条件参与,无法判断某一行是否一定不会被走过,于是......