代码随想录刷题笔记-Day21

1. 二叉搜索树中的插入操作

701. 二叉搜索树中的插入操作icon-default.png?t=N7T8https://leetcode.cn/problems/insert-into-a-binary-search-tree/给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。

注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。

示例 1:

输入:root = [4,2,7,1,3], val = 5
输出:[4,2,7,1,3,5]
解释:另一个满足题目要求可以通过的树是:

示例 2:

输入:root = [40,20,60,10,30,50,70], val = 25
输出:[40,20,60,10,30,50,70,null,null,25]

示例 3:

输入:root = [4,2,7,1,3,null,null,null,null,null,null], val = 5
输出:[4,2,7,1,3,5]

解题思路

这道题只要求了满足二叉搜索树的特性,所以只需要最后一路遍历到叶子节点就行了。

代码

class Solution {public TreeNode insertIntoBST(TreeNode root, int val) {if (root == null)return new TreeNode(val);TreeNode head = root;TreeNode pre = root;while (root != null) {pre = root;if (root.val > val)root = root.left;elseroot = root.right;}if (pre.val > val)pre.left = new TreeNode(val);elsepre.right = new TreeNode(val);return head;}
}

2. 删除二叉搜索树中的节点

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

给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。

一般来说,删除节点可分为两个步骤:

  1. 首先找到需要删除的节点;
  2. 如果找到了,删除它。

示例 1:

输入:root = [5,3,6,2,4,null,7], key = 3
输出:[5,4,6,2,null,null,7]
解释:给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。
一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。
另一个正确答案是 [5,2,6,null,4,null,7]。


示例 2:

输入: root = [5,3,6,2,4,null,7], key = 0
输出: [5,3,6,2,4,null,7]
解释: 二叉树不包含值为 0 的节点

示例 3:

输入: root = [], key = 0
输出: []

 解题思路

删除比较复杂,但是还好不是红黑树不会存在翻转这些操作。

删除操作有几种情况需要进行列举:

  1. 为null,不做操作;
  2. 没有左右子树,删除节点就行
  3. 只有左子树,删除节点,左子树替换位置
  4. 只有右子树,删除节点,右子树替换位置
  5. 左右子树都有,二叉搜索树的特性是,左子树一定比右子树小,所以可以把左子树整体反倒右子树的最左叶子的左侧。

使用递归实现:

  • 返回值和参数:root和key,返回迭代后的子树root
  • 终结条件:当root为null的时候,返回null
  • 递归逻辑:不为key的时候,判断大小,然后走左或者右子树进行递归,为key的时候,执行五个判断逻辑。 

代码

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

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

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

相关文章

Hive 窗口函数札记

窗口函数的理解是hive函数里的一个高阶内容&#xff0c;把一些容易混淆的做个记录&#xff0c;以方便随时查看。 1&#xff1a;ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING 含义&#xff1a; 这个定义表示窗口范围从当前行的前任意多行开始&#xff08;包括最早的行&a…

Miniconda 安装和使用笔记

Miniconda是Anaconda的简化版, 可以管理多个Python版本的环境. 实际使用的话, 占用的空间不会很小, 我跑一些正常的应用后, 安装目录占用空间4.3GB, 安装建议要预留10到20G的空间. 安装 Miniconda 下载安装包 https://docs.anaconda.com/free/miniconda/历史版本 https://re…

Discuz! X收藏列表页调用封面图片详细教程

Discuz! X默认收藏列表不显示封面图&#xff0c;我们接到客户需求要开发封面图功能在帖子列表&#xff0c;这是我们整理好的详细教程&#xff0c;下载即可查看 修改后&#xff0c;显示封面的收藏列表截图&#xff1a; 详细开发教程下载地址&#xff1a;Discuz! X收藏列表页调用…

【9】知识存储

一、图数据库neo4j Neo4j是一个高性能的,NOSQL图形数据库&#xff0c;它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。单节点的服务器可承载上亿级的节点和关系&#xff0c;单节点性能不够时也可进行分布式集群部…

提升认知水平和防止偏见浅谈

提升认知水平和防止偏见浅谈 《庄子外物》&#xff1a;井蛙不可语海&#xff0c;夏虫不可语冰。 不要跟井底的青蛙谈论大海&#xff0c;因为它的认知只有井底那么大&#xff0c;大海对于它来说是认知盲区&#xff1b;不要与夏虫去谈论冰雪&#xff0c;因为夏虫一生很短没有经历…

5. D. In Love(贪心)

题目链接 D. In Love 题意 线段的集合&#xff0c;有两种操作 插入一个线段删除一个线段 每次操作后都要去查询是否存在两个线段不相交 题解 首先先看两个线段不相交需要满足什么条件 也就是较 大 l > 小 r 大l>小r 大l>小r即可满足不相交 我们进行推广 当集合…

big three(c++)

"Big Three"是指在C类中需要手动实现的三个特殊成员函数&#xff0c;分别是拷贝构造函数&#xff08;Copy Constructor&#xff09;、拷贝赋值运算符&#xff08;Copy Assignment Operator&#xff09;和析构函数&#xff08;Destructor&#xff09;。这三个函数通常…

手撕qsort函数

前言 本篇主要讲解的是qsort函数细节以及运用实例。 紧跟我的脚步一起手撕qsort函数吧~ 欢迎关注​​个人主页&#xff1a;逸狼 更多优质内容&#xff1a; 拿捏c语言指针&#xff08;上&#xff09; 拿捏c语言指针&#xff08;中&#xff09; 拿捏c语言指针&#xff08;下&…

【数据结构/c++】求解有向无环图DAG的关键路径

#include<cstring>//memset头文件 #include<algorithm>//fill头文件 #include<vector> #include<stdio.h> #include<stack> #include<queue> using namespace std; const int MAXV510; struct Node{int v,w;Node(int _v,int _w):v(_v),…

超详细的总结!大模型算法岗面试题(含答案)来了!

文章目录 技术交流一、基础篇二、大模型&#xff08;LLMs&#xff09;进阶三、大模型&#xff08;LLMs&#xff09;LangChain四、大模型分布式训练五、大模型&#xff08;LLMs&#xff09;推理用通俗易懂的方式讲解系列 大模型应该是目前当之无愧的最有影响力的AI技术&#xff…

学习 Kubernetes(K8s)、常用命令

学习 Kubernetes&#xff08;K8s&#xff09;是现代云原生应用开发和部署的关键&#xff0c;它提供了一种灵活的、自动化的方式来管理容器化的应用程序。下面是学习 Kubernetes 和一些常见命令的建议&#xff1a; 学习 Kubernetes 官方文档&#xff1a;Kubernetes官方文档是学…

【Langchain】+ 【baichuan】实现领域知识库【RAG】问答系统

本项目使用Langchain 和 baichuan 大模型&#xff0c; 结合领域百科词条数据&#xff08;用xlsx保存&#xff09;&#xff0c;简单地实现了领域百科问答实现。 from langchain.text_splitter import CharacterTextSplitter, RecursiveCharacterTextSplitter from langchain_co…

2023年便宜的云服务器分享:最低26元4核16G

2024年阿里云服务器租用价格表更新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服…

嵌入式学习第十九天!(时间获取、文件属性和权限的获取、软链接和硬链接)

时间获取&#xff1a; 1. time time_t time(time_t *tloc); 功能&#xff1a;返回1970-01-01到现在的秒数&#xff08;格林威治时间&#xff09; 参数&#xff1a; tloc:存放秒数空间首地址 返回值: 成功返回秒数 失败返回-1 2. localtime struct tm *localtime(const tim…

python celery使用队列

在celery的配置方法中有个参数叫task_routes&#xff0c;是用来设置不同的任务 消费不同的队列&#xff08;也就是路由&#xff09;。 格式如下&#xff1a; { ‘task name’: { ‘queue’: ‘queue name’ }}直接上代码&#xff0c;简单明了&#xff0c;目录格式如下&#x…

阿里云服务器“镜像”全方面解析

阿里云服务器镜像怎么选择&#xff1f;云服务器操作系统镜像分为Linux和Windows两大类&#xff0c;Linux可以选择Alibaba Cloud Linux&#xff0c;Windows可以选择Windows Server 2022数据中心版64位中文版&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器操…

day37打卡

day37打卡 738. 单调递增的数字 解法&#xff0c;贪心&#xff1a; 从后向前遍历&#xff0c;找出并记录最终递减的位置&#xff0c;把当前减1&#xff0c;再把后面的全置为9即可。 举个例子&#xff0c;数字&#xff1a;332&#xff0c;从前向后遍历的话&#xff0c;那么就…

【触想智能】国产工控机五大分类你知道吗?

工控机是专门为工业控制设计&#xff0c;用于对生产过程中使用的机器设备、生产流程、数据参数等进行监测与控制的计算机。由于工控机经常会在恶劣的环境下运行&#xff0c;对数据的安全性要求也比较高&#xff0c;因此需要单独定制才能满足需求。 在现代化工业生产过程中&…

时间获取和文件属性和权限获取实现 ‘ls -l’ 功能

一&#xff0c;时间获取: 1.time time_t time(time_t *tloc); 功能: 返回1970-1-1到现在的秒数&#xff08;格林威治时间&#xff09; 参数: tloc:存放秒数空间首地址 返回值: 成功返回秒数&#xff08;用 time_t 类型的变量接&…

不确定性问题的论文笔记

Statistics starting from 01/2024, 仅列出了优秀工作中的一部分 每一年的排列顺序: CVPR, ICLR, ECCV, ICCV, ICML, AAAI, TPAMI&#xff0c;TIP&#xff0c;Arxiv 等 每周更新 2024 论文信息速览笔记是 否 已精读精读笔记Shao W, Xu Y, Peng L, et al. Failure Detection fo…