代码随想录算法训练营DAY20 | 二叉树 (8)

一、LeetCode 701 二叉搜索树中的插入操作

题目链接: 701.二叉搜索树中的插入操作icon-default.png?t=N7T8https://leetcode.cn/problems/insert-into-a-binary-search-tree/description/

思路:见缝插针罢辽。

class Solution {public TreeNode insertIntoBST(TreeNode root, int val) {if(root == null){return new TreeNode(val);}if(val < root.val){root.left = insertIntoBST(root.left,val);}if(val > root.val){root.right = insertIntoBST(root.right,val);}return root;}     
}
/*** 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;*     }* }*/

 二、LeetCode 450 删除二叉搜索树中的节点

题目链接:450.删除二叉搜索树中的节点icon-default.png?t=N7T8https://leetcode.cn/problems/delete-node-in-a-bst/description/

思路:

        删除节点后的五种情况:

        ①未找到,返回null

        ②被删除节点为叶子结点,直接删除,返回null

        ③被删除节点左孩子空右不空,返回右孩子

        ④被删除节点右孩子空左不空,返回左孩子

        ⑤被删除节点左右皆不空,将删除节点的左子树头结点 放到删除节点的右子树的 最左面节点的左孩子上,返回删除节点右孩子为新的根节点。

        第五种情况详解↓

要删除元素7
将7的左孩子5移动到右孩子9的最左边孩子节点
7的右孩子取代7的位置
class Solution {public TreeNode deleteNode(TreeNode root, int key) {//最终未找到if(root == null){return root;}//找到节点if(root.val == key){//左右孩子节点分别为空的情况,隐含了被删除节点为叶子节点的情况if(root.left == null){return root.right;}else if(root.right == null){return root.left;}else{//左右孩子节点都不为空TreeNode cur = root.right;while(cur.left != null){cur = cur.left;}cur.left = root.left;return root.right;}}//未到叶子结点、继续寻找if(key < root.val){//在左子树中寻找and删除root.left = deleteNode(root.left,key);}if(key > root.val){//在右子树中寻找and删除root.right = deleteNode(root.right,key);}return root;}
}
/*** 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;*     }* }*/

三、小结

        赶上进度了ovo,呼~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/479048.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建SVN服务端和客户端

参考博客&#xff1a; https://zhuanlan.zhihu.com/p/428552058 先下载这两个文件&#xff1a; 链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1_1v_jKm3h7ZDSYEsgYyovA?pwd11ku 提取码&#xff1a;11ku –来自百度网盘超级会员V5的分享 第一个压缩包里有客户端…

微信小程序-表单提交和校验

一、使用vant组件生成如下页面 二、前端代码如下 <form bindsubmit"submitForm"><view class"cell-group"><van-cell-group><van-field value"{{ title }}" label"商品名称" placeholder"请输入商品名称&qu…

C++ 浮点数二分 数的三次方根

给定一个浮点数 n &#xff0c;求它的三次方根。 输入格式 共一行&#xff0c;包含一个浮点数 n 。 输出格式 共一行&#xff0c;包含一个浮点数&#xff0c;表示问题的解。 注意&#xff0c;结果保留 6 位小数。 数据范围 −10000≤n≤10000 输入样例&#xff1a; 1000.00…

Golang - 使用CentOS 7 安装Golang环境

文章目录 操作步骤 操作步骤 为在CentOS 7上安装Go语言环境&#xff0c;可以按照以下步骤进行操作&#xff1a; 下载Go语言包&#xff1a; 从官方网站 https://golang.org/dl/ 下载适用于Linux的Go语言包。 解压缩Go语言包&#xff1a; 使用以下命令解压缩下载的Go语言包 […

基于Springboot+Vue的在线考试系统源码

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着现代教育和职业培…

学习Vue3的第二天

目录 Vue3核心语法1 OptionsAPI 与 CompositionAPI setup函数 setup 概述 setup 语法糖 ref 创建&#xff1a;基本类型的响应式数据 reactive 创建&#xff1a;对象类型的响应式数据 ref 创建&#xff1a;对象类型的响应式数据 ref 对比 reactive toRefs 与 toRef c…

Linux【动静态库】

目录 1.软硬链接 1.1软硬链接的语法 1.2理解软硬链接 1.3目录文件的硬链接 1.4应用场景 1.5ACM时间 2.动静态库 2.1认识库 3.制作静态库 3.1静态库打包 3.2静态库的使用 4.制作动态库 4.1动态库打包 4.2动态库的链接使用 4.3动态库的链接原理 总结&#xff1…

J-Flash J-Link解锁GD32单片机

目录 前言一、使用J-Flash工具解锁单片机1.打开J-Flash软件2.创建工程3.连接 J-Link4.解锁Flash 二、使用J-Link STM32 Unlock解锁GD321.打开J-Link STM32 Unlock工具2.命令行输入3.解锁成功4.验证 三、附录总结&#x1f600;*授人鱼,更要授人以渔&#xff0c;希望猿一的本篇博…

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…

代码随想录算法训练营29期|day55 任务以及具体安排

第九章 动态规划part12 309.最佳买卖股票时机含冷冻期 class Solution {public int maxProfit(int[] prices) {//0代表持股票&#xff0c;1代表保持卖出状态&#xff0c;2代表卖出股票。3代表冷冻int[][] dp new int[prices.length][4];dp[0][0] -prices[0];for(int i 1 ; …

【Java】图解 JVM 垃圾回收(二):垃圾收集器、Full GC

图解 JVM 垃圾回收&#xff08;二&#xff09; 1.垃圾收集器1.1 内存分配与回收策略1.2 Serial 收集器1.3 Parallel Scavenge 收集器1.4 ParNew 收集器1.5 CMS 收集器1.6 G1 收集器 2.Full GC 的触发条件 1.垃圾收集器 Java 虚拟机提供了多种垃圾回收器&#xff0c;每种回收器…

运维:自主编码实现运维自动化的转型之旅

引言 随着业务系统和底层中间件服务的复杂度不断增加&#xff0c;传统手工运维方式面临着诸多挑战和限制。人工编写运维脚本显得非常低效&#xff0c;同时手动执行运维操作存在着巨大风险。在此情况下&#xff0c;推动运维自动化成为运维人员必须落地实施的工作。运维同学如果…