【LeetCode75】第四十二题 删除二叉搜索数中的节点
目录
题目:
示例:
分析:
代码:
题目:

示例:

分析:
题目给我们一棵二叉搜索树,给我们一个目标值,让我们删除节点值等于目标值的节点,并且删除之后需要保持二叉搜索树的定义,也就是任意一个节点的左子树上的所有节点的值都小于该节点的值,右子树上的所有节点的值都大于该节点的值。
删除一个节点我们首先需要先找到这个节点,根据二叉搜索树的定义,我们遍历二叉树,如果当前节点的值大于目标值,那么目标值只能存在与当前节点的左子树,我们就接着向左子树遍历,反之向右子树遍历。
直到我们找到了目标节点,我们需要把它删除,并且还需要保持这是一棵二叉搜索树。我们可以知道目标节点的右子树上任意一个节点的值都比目标节点的左子树上任意一个节点的值更大,所以我们可以把目标节点的右子树接到目标节点的左子树的最大的节点的右子树上,再让目标节点的左子树顶替上原先目标节点的位置,这样就完成了删除目标节点的这样的操作。
我们也可以是让目标节点的右子树顶替上原先目标节点的位置,再在右子树里最小的节点的左子树接上目标节点的左子树,这样也是可以的。都是满足二叉搜索树的定义。

代码:
class Solution {
public:TreeNode* deleteNode(TreeNode* root, int key) {if(root==nullptr) return root;if(root->val==key){if(root->right==nullptr) return root->left;if(root->left==nullptr) return root->right;TreeNode* node=root->left;while(node->right) node=node->right;node->right=root->right;root=root->left;}else if(root->val<key) root->right=deleteNode(root->right,key);else if(root->val>key) root->left=deleteNode(root->left,key);return root;}
};
相关文章:
【LeetCode75】第四十二题 删除二叉搜索数中的节点
目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一棵二叉搜索树,给我们一个目标值,让我们删除节点值等于目标值的节点,并且删除之后需要保持…...
c++:QT day2 信号和槽
1.多态: 静态多态:函数的重载 动态多态:程序运行 多态的实现:父类的指针或引用,指向或初始化子类的对象,调用子类对父类重写的函数,进而展开子类的功能 2.虚函数:用virtua关键字修饰的函数是虚函…...
16 Linux之JavaEE定制篇-搭建JavaEE环境
16 Linux之JavaEE定制篇-搭建JavaEE环境 文章目录 16 Linux之JavaEE定制篇-搭建JavaEE环境16.1 概述16.2 安装JDK16.3 安装tomcat16.4 安装idea2020*16.5 安装mysql5.7 学习视频来自于B站【小白入门 通俗易懂】2021韩顺平 一周学会Linux。可能会用到的资料有如下所示࿰…...
AI人员打闹监测识别算法
AI人员打闹监测识别算法通过yolopython网络模型框架算法, AI人员打闹监测识别算法能够准确判断出是否有人员进行打闹行为,算法会立即发出预警信号。Yolo算法,其全称是You Only Look Once: Unified, Real-Time Object Detection,其…...
如何使用CRM系统进行精细化管理客户?
客户是企业的生命线,对客户进行精细化管理,是提高企业收益的关键。那么,如何进行客户管理?CRM系统可以实现精细化管理客户,提升客户的价值。下面我们就来详细说一说。 1、获取客户信息 Zoho CRM系统可以通过web表单、…...
20230829工作心得:如何把大List 切割为多个小List?
1 怎么看这个方法谁在调用它? 解决:按ctrl,然后点进去看。 idea里看方法的具体细节,和谁在调用这个方法,都可以通过按ctrl,然后单击查看。 2 请求的时候,如果时间yyyy-MM-dd HH:mm:ss在url里会…...
基于YOLOV8模型的阶梯和工人目标检测系统(PyTorch+Pyside6+YOLOv8模型)
摘要:基于YOLOV8模型的阶梯和工人目标检测系统可用于日常生活中检测与定位工人、梯子目标,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算…...
Nginx特性应用及载装
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:网易、腾讯、阿里等。 …...
vue3+ts组件通信
1、父组件向组件传参 父组件代码 子组件代码 2、子组件向父组件传参 组件间代码 父组件代码 3、如果eslint报错,需在.eslintrc.js中添加一行代码 4、通过父组件通过 ref 获取子组件的属性或者方法 父组件代码 子组件代码 5、孙子组件provide和inject 父组件…...
基于卷积优化算法优化的BP神经网络(预测应用) - 附代码
基于卷积优化算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于卷积优化算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.卷积优化优化BP神经网络2.1 BP神经网络参数设置2.2 卷积优化算法应用 4.测试结果:5…...
《论文阅读18》JoKDNet
一、论文 研究领域:用于大尺度室外TLS点云配准的联合关键点检测和特征表达网络论文:JoKDNet: A joint keypoint detection and description network for large-scale outdoor TLS point clouds registration International Journal of Applied Earth Ob…...
buuctf [CISCN 2019 初赛]Love Math
这题主要利用了php的一些特性 变量函数数字转字符串 源码 <?php error_reporting(0); //听说你很喜欢数学,不知道你是否爱它胜过爱flag if(!isset($_GET[c])){show_source(__FILE__); }else{//例子 c20-1$content $_GET[c];if (strlen($content) > 80) {…...
GraphQL渗透测试案例及防御办法
什么是GraphQL GraphQL 是一种 API 查询语言,旨在促进客户端和服务器之间的高效通信。它使用户能够准确指定他们在响应中所需的数据,从而有助于避免有时使用 REST API 看到的大型响应对象和多个调用。 GraphQL 服务定义了一个合约,客户端可…...
Hive SQL 优化大全(参数配置、语法优化)
文章目录 参数配置优化yarn-site.xml 配置文件优化mapred-site.xml 配置文件优化 分组聚合优化 —— Map-Side优化参数解析优化案例 服务器环境说明 机器名称内网IP内存CPU承载服务master192.168.10.1084NodeManager、DataNode、NameNode、JobHistoryServer、Hive、HiveServer…...
go锁-waitgroup
如果被等待的协程没了,直接返回 否则,waiter加一,陷入sema add counter 被等待协程没做完,或者没人在等待,返回 被等待协程都做完,且有人在等待,唤醒所有sema中的协程 WaitGroup实现了一组协程…...
访问0xdddddddd内存地址引发软件崩溃的问题排查
目录 1、问题描述 2、访问空指针或者野指针 3、常见的异常值 4、0xdddddddd内存访问违例问题分析与排查 5、关于0xcdcdcdcd和0xfeeefeee异常值的排查案例 6、最后 VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)ht…...
Java从入门到精通-流程控制(一)
流程控制 1.复合语句 复合语句,也称为代码块,是一组Java语句,用大括号 {} 括起来,它们可以被视为单个语句。复合语句通常用于以下情况: - 在控制结构(如条件语句和循环)中包含多个语句。 - …...
MybatisPlus(2)
前言🍭 ❤️❤️❤️SSM专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 上篇我们简单介绍了MybatisPlus的方便之处,这篇来深入了解Myb…...
iOS UITableView上拉加载解决偶然跳动的Bug
最近做项目,测试测出来一个Bug,列表添加了上拉刷新和下拉加载,当我弹窗消失时,调用刷新列表后,在某个手机型号上,偶发列表刷新跳动的bug。(一般在列表上拉加载刷新到最后一页后,再弹窗消失,reload列表,会出现此bug) Bug复现如下:RPReplay_Final1693296737 解决方案…...
MySQL 外键使用详解
1、MySQL 外键约束语法 MySQL 支持外键,允许在表之间进行相关数据的交叉引用,并有助于保持相关数据的一致性。 一个外键关系涉及到一个父表,该父表保存初始列值,和一个子表,子表的列值引用父表的列值。外键约束定义在…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
