【每日一题】2673. 使二叉树所有路径值相等的最小代价

news/2024/7/7 19:01:09

【每日一题】2673. 使二叉树所有路径值相等的最小代价

  • 2673. 使二叉树所有路径值相等的最小代价
    • 题目描述
    • 解题思路

2673. 使二叉树所有路径值相等的最小代价

题目描述

给你一个整数 n 表示一棵 满二叉树 里面节点的数目,节点编号从 1 到 n 。根节点编号为 1 ,树中每个非叶子节点 i 都有两个孩子,分别是左孩子 2 * i 和右孩子 2 * i + 1 。

树中每个节点都有一个值,用下标从 0 开始、长度为 n 的整数数组 cost 表示,其中 cost[i] 是第 i + 1 个节点的值。每次操作,你可以将树中 任意 节点的值 增加 1 。你可以执行操作 任意 次。

你的目标是让根到每一个 叶子结点 的路径值相等。请你返回 最少 需要执行增加操作多少次。

注意:

满二叉树 指的是一棵树,它满足树中除了叶子节点外每个节点都恰好有 2 个节点,且所有叶子节点距离根节点距离相同。
路径值 指的是路径上所有节点的值之和。

示例 1:

在这里插入图片描述

输入:n = 7, cost = [1,5,2,2,3,3,1]
输出:6
解释:我们执行以下的增加操作:
- 将节点 4 的值增加一次。
- 将节点 3 的值增加三次。
- 将节点 7 的值增加两次。
从根到叶子的每一条路径值都为 9 。
总共增加次数为 1 + 3 + 2 = 6 。
这是最小的答案。

示例 2:

在这里插入图片描述

输入:n = 3, cost = [5,3,3]
输出:0
解释:两条路径已经有相等的路径值,所以不需要执行任何增加操作。

提示:

3 <= n <= 105
n + 1 是 2 的幂
cost.length == n
1 <= cost[i] <= 104

解题思路

思路:刚刚那题让我想到了这一题,虽然不太像,但是都是二叉树上的问题。要使得二叉树所有路径值相等的最小代价,那必定是从下往上更新,对于叶子节点,即将两者均更新为其中的最大值,其需要的代价是两者之间的差值绝对值,然后再将这个最大值传递到上方,依次类推。

int minIncrements(int n, vector<int>& cost) 
{
   // 满二叉树 可以使用数组表示
   int ans=0; //表示最少操作次数
   for(int i=n/2;i>0;i--) //i表示节点编号 如果对应数组的话要减一
   {
      ans+=abs(cost[2*i-1]-cost[2*i]);  //取兄弟节点的差值绝对值
      cost[i-1]+=min(cost[2*i-1],cost[2*i]); //将子节点代价加上
   }
   return ans;
}

总结:挺巧妙的!


http://lihuaxi.xjx100.cn/news/1344004.html

相关文章

云计算的学习(六)

六、云计算的发展趋势 1.云计算相关领域介绍 1.1物联网 物联网来源于互联网&#xff0c;是万物互联的结果&#xff0c;是人和物、物和物之间产生通信和交互。 物联网主要技术&#xff1a; RFID技术&#xff08;射频识别技术&#xff09;传感器技术嵌入式系统技术 1.2大数据…

scrapy集成selenium

前言 使用scrapy默认下载器---》类似于requests模块发送请求&#xff0c;不能执行js&#xff0c;有的页面拿回来数据不完整 想在scrapy中集成selenium&#xff0c;获取数据更完整&#xff0c;获取完后&#xff0c;自己组装成 Response对象&#xff0c;就会进爬虫解析&#xff0…

Pinia学习笔记 | 入门 - 映射辅助函数

文章目录 Pinia学习笔记简介Pinia是什么 代码分割机制案例1.挂载PiniaVue3Vue2&#xff1a;安装PiniaVuePlugin插件 2.定义store的两种方式options API 和 composition API使用options API模式定义使用composition API模式 2.业务组件对store的使用创建store实例解构访问Pinia容…

Java并发编程:解锁多线程魔法的奥秘

代码内容在最后 在当今并行和分布式计算的时代&#xff0c;Java作为一门强大的编程语言&#xff0c;在多线程编程方面扮演着重要的角色。本文将介绍Java并发编程的基础知识和最佳实践&#xff0c;并提供实际示例来演示多线程编程的应用和解决方案。 为什么需要并发编程&#xf…

前端实现 DIV 高度只有100px,宽度只有100px ,我要在这个DIV放一个宽度200的DIV,左右拉动滚动条显示

<!DOCTYPE html> <html> <head><title>点击监听两组span标签</title><style>.outer-div {width: 100px;height: 100px;overflow-x: scroll;background-color: #abc1ee;}.inner-div {width: 200px;}/* 自定义滚动条样式 */.outer-div::-web…

gma 2 教程(二)数据操作:3. 支持生成的栅格格式信息

为了方便了解和选择输出栅格格式、配置高级创建选项&#xff0c;下表列出了gma可以生成&#xff08;复制/创建/转换&#xff09;的所有栅格格式的主要信息&#xff1a; 格式名生成模式支持数据类型扩展名多维栅格支持色彩映射表支持的数据类型多波段支持压缩模式AAIGrid复制By…

RPC和HTTP区别是什么?

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;RPC和HTTP区别是什么&#xff1f; ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的…

面试知识点总结一

1.说一说 select 的原理以及缺点 select原理&#xff1a; select是一种IO多路&#xff08;多个TCP连接&#xff09;复用技术&#xff0c;具体实现原理是 select会维护一个文件描述符列表fd_set&#xff0c;用来存放需要监听的文件描述符fd&#xff0c;其本质是一个1024bit的b…