【算法刷题day22】Leetcode:235. 二叉搜索树的最近公共祖先、701. 二叉搜索树中的插入操作、450. 删除二叉搜索树中的节点

文章目录

    • Leetcode 235. 二叉搜索树的最近公共祖先
      • 解题思路
      • 代码
      • 总结
    • Leetcode 701. 二叉搜索树中的插入操作
      • 解题思路
      • 代码
      • 总结
    • Leetcode 450. 删除二叉搜索树中的节点
      • 解题思路
      • 代码
      • 总结

草稿图网站
java的Deque

Leetcode 235. 二叉搜索树的最近公共祖先

题目:235. 二叉搜索树的最近公共祖先
解析:代码随想录解析

解题思路

法1:和人二叉树的最近公共祖先一样的遍历搜索方法。

代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if (root == null || root == p || root == q)return root;TreeNode left = lowestCommonAncestor(root.left, p, q);TreeNode right = lowestCommonAncestor(root.right, p, q);if (left == null &&right == null)return null;else if (left != null && right == null)return left;else if (left == null && right != null)return right;elsereturn root;}
}//递归
class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if (p.val < root.val && q.val < root.val)   return lowestCommonAncestor(root.left, p, q);if (p.val > root.val && q.val > root.val)   return lowestCommonAncestor(root.right, p, q);return root;}
}//迭代法
class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {TreeNode cur = root;while (true) {if (p.val < cur.val && q.val < cur.val)cur = cur.left;else if (p.val > cur.val && q.val > cur.val)cur = cur.right;elsebreak;}return cur;}
}

总结

利用好二叉搜索树的有序性

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

题目:701. 二叉搜索树中的插入操作
解析:代码随想录解析

解题思路

迭代和递归

代码

/*** 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 TreeNode insertIntoBST(TreeNode root, int val) {if (root == null)return new TreeNode(val);TreeNode pre = null;TreeNode cur = root;while (cur != null) {if (val < cur.val) {pre = cur;cur = cur.left;} else if (val > cur.val) {pre = cur;cur = cur.right;}}if (val < pre.val)pre.left = new TreeNode(val);elsepre.right = new TreeNode(val);return root;}
}//递归
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;}
}

总结

根据二叉搜索树的性质

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

题目:450. 删除二叉搜索树中的节点
解析:代码随想录解析

解题思路

在这里插入图片描述
应该为左为空,右为空,左右都不为空的情况

代码

/*** 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 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.left;while (cur.right != null)cur = cur.right;cur.right = root.right;root = root.left;return root;}}if (key < root.val) root.left = deleteNode(root.left, key);if (key > root.val) root.right = deleteNode(root.right, key);return root;}
}

总结

暂无

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

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

相关文章

JD抓包 | 安卓app抓包

去年11月份左右搞过一次安卓抓包, 搞了很久试了很多方法, 才弄好. 时隔半年, 安卓抓包依然是令我头疼的问题 这次简单记录一下过程(细节太多我也说不清) JD的有效信息接口通常是以下这样的, 其他的接口并没有返回太多"有用"的信息 https://api.m.jd.com/client.act…

Composite 组合

意图 将对象组合成树形结构以表示“部分-整体”的层级结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 结构 其中&#xff1a; Component为组合中的对象声明接口&#xff1b;在适当情况下实现所有类共有接口的默认行为&#xff1b;声明一个接口用于访问和管…

Java基础(二)-- 面向对象

文章目录 第二章、面向对象一、类和对象1、基本概念1&#xff09;什么是对象2&#xff09;什么是面向对象3&#xff09;什么是类4&#xff09;什么是对象的属性和方法5&#xff09;类和对象的关系 2、单一职责原则3、对象实例化1&#xff09;Java内存管理之堆和栈 4、构造方法5…

LeetCode题练习与总结:有效数字--65

一、题目描述 有效数字&#xff08;按顺序&#xff09;可以分成以下几个部分&#xff1a; 1. 一个 小数 或者 整数 2. &#xff08;可选&#xff09;一个 e 或 E &#xff0c;后面跟着一个 整数 小数&#xff08;按顺序&#xff09;可以分成以下几个部分&#xff1a; 1. &…

串及BF算法

一.串的相关定义 1.字符串的拷贝,比较,链接等等(C语言) 2 串:用 引起来的字符序列,例如abcd (区别字符串"abcd") 3.空串: (区别字符串"") 4.子串:包含空串和本身,abc的子串:,a,b,c,ab,bc,abc7个 5.真子串:包含空串,不包含本身,abc的子串:,a,b,c,a…

自动驾驶仿真测试的难点

自动驾驶仿真测试是自动驾驶车辆商业化落地的一道重要关卡&#xff0c;仿真测试技术的发展进步将决定自动驾驶落地的时间点。 仿真测试对自动驾驶的重要性不言而喻&#xff0c;笔者写这些内容希望能够抛转引玉。更希望能够作为一个“呐喊者”让更多的人去关注和重视自动驾驶仿…

一条命令把视频和字幕合并成一个文件

ffmpeg -i input_video.mp4 -i input_subtitles.ass -c:s mov_text -c:v copy -map 0:v -map 0:a -map 1:s output_video.mp4 参数说明&#xff1a; -i input_video.mp4 指定输入视频文件。 -i input_subtitles.ass 指定输入的字幕文件。 -c:s mov_text 指定字幕编码器为mov…

【LeetCode: 705. 设计哈希集合 + 数据结构设计】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Qt快速入门(MV架构之TableView + QStandardItemModel + 自定义代理小案例)

Qt快速入门&#xff08;MV架构之TableView QStandardItemModel 自定义代理小案例&#xff09; 关于MV架构的简单介绍 在Qt框架中&#xff0c;代理&#xff08;Delegate&#xff09;、模型&#xff08;Model&#xff09;和视图&#xff08;View&#xff09;之间的关系构成了…

【数据工具】ArcGIS批量出图工具箱

工具下载链接&#xff1a;数据下载链接 我们在使用Arcgis制图的过程中&#xff0c;经常会遇到需要大量出图的情况&#xff0c;如何将做好的图批量导出jpg是一件令人头疼的问题。 今天小编就给大家分享俩个ArcGIS批量出图的工具箱&#xff0c;一个可以批量导出图层为jpg&#…

Java-Scanner类进阶+题目

Scanner进阶 接收整数数据时&#xff1a; 接收小数数据时&#xff1a; 例子&#xff1a; 可以先这样弄出scanner的框架&#xff1a; 未完待续... ...

科技论文和会议录制高质量Presentation Video视频方法

一、背景 机器人领域&#xff0c;许多高质量的期刊和会议&#xff08;如IEEE旗下的TRO&#xff0c;RAL&#xff0c;IROS&#xff0c;ICRA等&#xff09;在你的论文收录后&#xff0c;需要上传一个Presentation Video材料&#xff0c;且对设备兼容性和视频质量有较高要求&#…

2024年DTC的回顾与思考

刚结束了2024的数据库技术嘉年华 这是我从2017年开始就参加的技术大会。中途因为疫情的耽误。正常来说我是连续的。知道我的朋友都知道我习惯炫耀一下。 按照惯例&#xff0c;此时此刻群友都在写大会回顾。只是有几个不讲武德的人已经发送了。下面有主观和客观的分析。 主观上…

手机银行客户端框架之TMF框架介绍

腾讯移动开发平台&#xff08;Tencent Mobile Framework&#xff09;整合了腾讯在移动产品中开发、测试、发布和运营的技术能力&#xff0c;为企业提供一站式、覆盖全生命周期的移动端技术平台。核心服务包括移动客户端开发组件、H5容器、灰度发布、热更新、离线包、网关服务、…

LeetCode-15-三数之和问题

题目说明 给定一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 &#xff1f;找出所有满足条件且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 给定数组 nums [-1, 0,…

Vol.41 SEO基本术语解释

1.TDK TDK&#xff1a;即标题、描述、关键词&#xff1b;TDK是网站的基本属性&#xff0c;对SEO非常重要&#xff0c;可以帮助搜索引擎了解你的网站&#xff1b; T&#xff1a;title 谷歌建议不超过70个字符 D&#xff1a;description 谷歌建议不超过150个字符 K&#xff1…

element-ui中el-radio-group组件绑定点击事件触发多次的解决办法

1、需求 电商首页需求&#xff0c;需要做个单选框&#xff0c;然后点击选中切换图标方向及更换价格升倒序&#xff0c;如下图&#xff1a; 从官网文档看&#xff0c;单选框支持change event&#xff0c;使用click加载按钮处不会触发选中 但是使用 click.native 事件不做处理…

ACID模型是什么

ACID模型是什么 ACID模型是数据库管理系统中保证事务处理安全性的一组特性。ACID是原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;和持久性&#xff08;Durability&#xff09;四个英文单词的…

开源博客项目Blog .NET Core源码学习(15:App.Hosting项目结构分析-3)

本文学习并分析App.Hosting项目中前台页面的关于本站页面和点点滴滴页面。 关于本站页面 关于本站页面相对而言布局简单&#xff0c;与后台控制器类的交互也不算复杂。整个页面主要使用了layui中的面包屑导航、选项卡、模版、流加载等样式或模块。   面包屑导航。使用layui…

初探vercel托管项目

文章目录 第一步、注册与登录第二步、本地部署 在个人网站部署的助手vercel&#xff0c;支持 Github部署&#xff0c;只需简单操作&#xff0c;即可发布&#xff0c;方便快捷&#xff01; 第一步、注册与登录 进入vercel【官网】&#xff0c;在右上角 login on&#xff0c;可登…