LeetCode:1038. 从二叉搜索树到更大和树(反向中序遍历 C++、Java)
目录
1038. 从二叉搜索树到更大和树
题目描述:
实现代码与解析:
dfs
原理思路:
1038. 从二叉搜索树到更大和树
题目描述:
给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。
提醒一下, 二叉搜索树 满足下列约束条件:
- 节点的左子树仅包含键 小于 节点键的节点。
- 节点的右子树仅包含键 大于 节点键的节点。
- 左右子树也必须是二叉搜索树。
示例 1:

输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]
示例 2:
输入:root = [0,null,1]
输出:[1,null,1]
提示:
- 树中的节点数在
[1, 100]范围内。 0 <= Node.val <= 100- 树中的所有值均 不重复 。
实现代码与解析:
dfs
C++
/*** 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:int sum = 0;void dfs(TreeNode* cur) {if (!cur) return;if (cur->right) dfs(cur->right);sum += cur->val;cur->val = sum;if (cur->left) dfs(cur->left);return;}TreeNode* bstToGst(TreeNode* root) {dfs(root);return root;}
};
Java
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public int sum = 0;public void dfs (TreeNode root) {if (root == null) return;if (root.right != null) dfs(root.right);sum += root.val;root.val = sum;if (root.left != null) dfs(root.left); return;}public TreeNode bstToGst(TreeNode root) {dfs(root);return root;}
}
原理思路:
题目的含义:其实就是把节点值换成树中所有大于其值的节点值总和,同时也告诉我们为搜索树,右边值大于左边,所以我们利用反向中序遍历,也就右中左的顺序,sum不断在中序获取累加val,并让节点值更新为sum。遍历完成即可得到修改后的树。
如果题目有搜索树一定要利用其性质,不会白给条件的。
相关文章:
LeetCode:1038. 从二叉搜索树到更大和树(反向中序遍历 C++、Java)
目录 1038. 从二叉搜索树到更大和树 题目描述: 实现代码与解析: dfs 原理思路: 1038. 从二叉搜索树到更大和树 题目描述: 给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所…...
【文末送书】Python OpenCV从入门到精通
文章目录 🍔简介opencv🌹内容简介🛸编辑推荐🎄导读🌺彩蛋 🍔简介opencv OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,提供了丰富的图像处理和…...
RabbitMQ 的七种消息传递形式
文章目录 一、RabbitMQ 架构简介二、准备工作 三、消息收发1. Hello World2. Work queues3. Publish/Subscrite3.1. Direct3.2. Fanout3.3. Topic3.4. Header 4. Routing5. Topics 大部分情况下,我们可能都是在 Spring Boot 或者 Spring Cloud 环境下使用 RabbitMQ&…...
开源免费跨平台数据同步工具-Syncthing
Syncthing是一款开源免费跨平台的文件同步工具,是基于P2P技术实现设备间的文件同步,所以它的同步是去中心化的,即你并不需要一个服务器,故不需要担心这个中心的服务器给你带来的种种限制,而且类似于torrent协议&#x…...
java语言中受检异常和非受检异常的区别是什么?
在Java语言中,异常可以分为两种类型:受检异常(Checked Exception)和非受检异常(Unchecked Exception)。 受检异常(Checked Exception):这是编译器要求必须进行处理的异常…...
vue3 element-plus el-table表头冻结,表头吸顶
一.使用方式 在main.ts页面创建 vue指令 import { createSticky } from /utils/stickyconst app createApp(App)createSticky(app)...app.mount(#app);在el-table标签上使用 v-sticky <div class"table-box"><!--此处的 .table-box 是会出现滚动条的DOM元…...
mysql中删除数据后,新增数据时id会跳跃,主键自增id不连续
引言: 在使用MySQL数据库时,有时候我们需要删除某些记录,但是删除记录后可能会导致表中的id不再连续排序。 如何实现删除记录后让id重新排序的功能。 如图: 删除数据后,中间的id不会自动连续。 下面有两种方法进行重…...
todesk连接ubuntu显示当前系统并无桌面环境,或无显示器,无法显示远程桌面,您需要自行安装X11桌面环境,或者使用终端文件功能
ToDesk远程遇到的问题如上图,换向日葵直接黑屏; 问题原因 截止发文时间,Todesk只支持X11协议,没有适配最新的Wayland协议,所以我们需要把窗口系统调整为X11才可以。 解决方法 修改配置文件,关闭wayland su…...
webpack学习-1.起步
webpack学习-1.起步 1.基础设置2.配置文件的引入3.总结 1.基础设置 首先 webpack是干嘛的呢,用官网的一张图 Webpack 是一个现代的静态模块打包工具。它主要用于将前端应用程序中的各种资源(例如 JavaScript、CSS、图片等)打包成一个或多个…...
GNU Radio 教程
初学者教程 GNU 无线电简介 什么是 GNU 无线电?安装 GNU 无线电你的第一个流程图 流程图基础知识 GRC 中的 Python 变量流程图中的变量运行时更新变量信号数据类型转换数据类型包装位流和向量层次块和参数 创建和修改 Python 块 创建你的第一个块带向量的 Pyt…...
Linux 下命令行启动与关闭WebLogic的相关服务
WebLogic 的服务器类型 WebLogic提供了三种类型的服务器: 管理服务器节点服务器托管服务器 示例和关系如下图: 对应三类服务器, 就有三种启动和关闭的方式。本篇介绍使用命令行脚本的方式启动和关闭这三种类型的服务器。 关于WebLogic 的…...
模型量化相关知识汇总
量化&反量化 量化操作可以将浮点数转换为低比特位数据表示,比如int8和 uint8. Q(x_fp32, scale, zero_point) round(x_fp32/scale) zero_point,量化后的数据可以经过反量化操作来获取浮点数 x_fp32 (Q - zero_point)* scale pytorch中 quantize_per_tensor的解释 py…...
yum 操作,出现Cannot retrieve metalink for repository: epel/x86_64
详细报错如下: Loaded plugins: fastestmirror Determining fastest mirrorsOne of the configured repositories failed (Unknown),and yum doesnt have enough cached data to continue. At this point the onlysafe thing yum can do is fail. There are a few…...
MySQL 8.2 Command Line Client闪退
原因一 服务没有打开 原因二 找不到my.ini文件 原因一的解决方法 操作1进入管理 操作2选择服务 1 2 3 操作3选择MySQL服务并打开 原因二的解决方法 查找目录中是否有my.ini文件 C:\Program Files\MySQL\MySQL Server 8.2(一般在这个目录下) 有时…...
【Geoserver】SLD点位样式(PointSymbolizer)设计全通
SLD文件可以控制geoserver的样式管理,这里专门针对点位进行设计,首先点位的设计需要用到这面这个大标签 之前的项目中已经用到了很多关于面的样式管理,这里新学习的是关于点的样式管理 PointSymbolizer 参考资料地址:https://doc…...
大数据基础设施搭建 - 数据装载
文章目录 一、概述二、数据装载(HDFS -> Hive)2.1 创建Hive表2.1.1 业务全量表建表语句2.1.2 业务增量表建表语句2.1.3 流量增量表建表语句 2.2 数据装载2.2.1 初始化装载省份和地区表2.2.2 业务数据装载(1) 开发脚本ÿ…...
医药行业:轻松学会超低温冰箱技能
超低温冰箱在医疗、科研和生物领域中扮演着至关重要的角色,用于存储和保护对温度极为敏感的样品和药品。 然而,由于这些冰箱内的温度波动可能导致样品的损坏,因此对超低温冰箱的监控变得至关重要。 客户案例 医疗研究机构 上海某医疗研究机…...
信息化系列——企业信息化建设(2)
企业信息化建设常见问题 1、信息化意识薄弱 目前,仍有许多企业的管理者在信息化方面表现出薄弱的认识,他们对信息化建设的重视程度显得捉襟见肘。结果,企业在信息化建设的人力、物力支持方面投入甚微,导致信息化建设难以完成顶层…...
php爬虫去抓取京东优惠券代码,事半功倍
没事总分享一些抓取方案的简单代码,实际中爬虫涉及的内容知识点其实很多,一般数据较少或非频繁的时候还是容易处理的。但是简单的时候也有问题的时候,比如ip经常被封,被限制等等问题。如果抓取的时候时间短或可以外赚费用的时候还…...
电子书制作神器!错过等十年
众所周知,随着科技的飞速发展,电子书已成为越来越多人的首选阅读方式。但制作电子书并不费力,一个制作电子书的神器就能解决这些问题。 那这款神器究竟有何魅力?它能帮助我们制作出怎样的电子书? 首先,这款…...
OpenClaw密码管理:nanobot安全存储与自动填充方案
OpenClaw密码管理:nanobot安全存储与自动填充方案 1. 为什么需要本地化的密码管理方案 去年的一次数据泄露事件让我彻底放弃了所有云端密码管理器。当时我使用的某知名商业工具突然弹出安全警报,提示"您的部分密码可能已被未授权访问"。虽然…...
告别编译踩坑:详解GMP交叉编译中DESTDIR和.la文件的那些‘坑’与正确用法
告别编译踩坑:详解GMP交叉编译中DESTDIR和.la文件的那些‘坑’与正确用法 交叉编译是嵌入式开发和跨平台构建中的常见需求,但其中隐藏的陷阱往往让开发者头疼不已。特别是像GMP这样的基础数学库,一旦编译或部署环节出现问题,可能导…...
SpringBoot整合MQTT实战:手把手教你实现设备动态连接与主题订阅管理(附完整源码)
SpringBoot整合MQTT实战:动态连接与主题订阅管理的工程化实现 在物联网项目开发中,设备连接管理和消息路由的灵活性往往是系统设计的难点。想象这样一个场景:你的智慧农业系统需要随时接入新部署的土壤传感器,气象站设备可能因网…...
AOP 失效的 7 种死法与复活指南
还是那句话,知识是一个返回的过程,追一句:时间出真知今天我们要聊的是一个“灵异事件”频发的领域——Spring AOP 失效。你是不是也经历过这种崩溃:“明明加了 Transactional,为什么数据库报错不回滚?” “…...
管人对账累垮人?巨有科技智慧市集系统一招减负
从城市商圈到景区古镇,从乡村田园到文创园区,各类市集遍地开花,但管理难题始终是制约行业发展的最大瓶颈。人工登记杂乱、对账结算繁琐、现场管控滞后、数据完全空白,一场中型市集就要耗费大量人力物力,大型市集更是纠…...
YOLOv11目标检测与伏羲气象模型的融合应用:灾害天气图像识别预警
YOLOv11目标检测与伏羲气象模型的融合应用:灾害天气图像识别预警 最近几年,极端天气好像越来越频繁了。有时候,一场突如其来的暴雨或浓雾,就能让整个城市的交通陷入瘫痪,甚至带来不小的经济损失。传统的天气预报&…...
从串口通信到内存总线:手把手拆解‘波特率’、‘比特率’与‘总线带宽’的异同与实战计算
从串口通信到内存总线:深度解析波特率、比特率与总线带宽的实战差异 在嵌入式开发和计算机体系结构领域,数据传输速率的计算是工程师日常工作中无法绕开的基础技能。但令人困惑的是,同样的"速率"概念在不同场景下却有着完全不同的…...
MySQL服务启动失败:NET HELPMSG 3534错误全面解析与实战解决方案
1. 遇到NET HELPMSG 3534错误时该怎么办 当你兴致勃勃地安装完MySQL,准备大干一场时,突然在命令行输入net start mysql后,屏幕上跳出"MySQL服务无法启动。服务没有报告任何错误。请键入NET HELPMSG 3534以获得更多的帮助"这样的提…...
各向异性方解石晶体的双折射效应
1. 摘要 双折射效应是各向异性材料最重要的光学特性,并广泛应用于多种光学器件。当入射光波撞击各向异性材料,会以不同的偏振态分束到不同路径,即众所周知的寻常光束和异常光束。在本示例中,描述了如何利用VirtualLab Fusion对双折…...
python基于微信小程序的直播带货商品数据分析系统的爬虫可视化
目录需求分析与系统架构设计微信小程序数据爬取方案数据存储与清洗数据分析与可视化系统集成与部署注意事项项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作需求分析与系统架构设计 明确系统目标为爬取微信小程序直播带货商品数…...
