【代码随想录算法训练营第37期 第二十一天 | LeetCode530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先】

代码随想录算法训练营第37期 第二十一天 | LeetCode530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先


一、530.二叉搜索树的最小绝对差

解题代码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 {
private:int result = INT_MAX;TreeNode* pre = NULL;void traversal(TreeNode* cur){if(cur == NULL) return;traversal(cur->left);if(pre != NULL)result = min(result, cur->val - pre->val);pre = cur;traversal(cur->right);}public:int getMinimumDifference(TreeNode* root) {traversal(root);return result;}
};

题目链接/文章讲解/视频讲解:
https://programmercarl.com/0530.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BB%9D%E5%AF%B9%E5%B7%AE.html



二、501.二叉搜索树中的众数

解题代码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 {
private:int maxCount = 0;int count = 0;TreeNode* pre = NULL;vector<int> result;void searchBST(TreeNode* cur){if(cur == NULL) return;searchBST(cur->left);if(pre == NULL)count = 1;else if(pre->val == cur->val)count ++;elsecount = 1;pre = cur;if(count == maxCount)result.push_back(cur->val);if(count > maxCount){maxCount = count;result.clear();result.push_back(cur->val);}searchBST(cur->right);return;}public:vector<int> findMode(TreeNode* root) {count = 0;maxCount = 0;pre = NULL;result.clear();searchBST(root);return result;}
};

题目链接/文章讲解/视频讲解:
https://programmercarl.com/0501.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E4%BC%97%E6%95%B0.html



三、236. 二叉树的最近公共祖先

解题代码C++:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(root == q || root == p || root == NULL) return root;TreeNode* left = lowestCommonAncestor(root->left, p, q);TreeNode* right = lowestCommonAncestor(root->right, p, q);if(left != NULL && right != NULL) return root;if(left == NULL) return right;return left;}
};

题目链接/文章讲解/视频讲解:
https://programmercarl.com/0236.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.html

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

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

相关文章

【网络】高级IO(select||poll||epoll)

基础引入 应用层read&&write的时候&#xff0c;把数据从用户层写到操作系统&#xff0c;本质是拷贝函数。read时候如果缓冲区没有数据&#xff0c;那么就要等待数据才能读取&#xff0c;因此IO等待拷贝&#xff0c;要进行拷贝&#xff0c;必须等待读写事件就绪。高效I…

成长之路Flutter中的TextField组件

TextField组件本身具备多种属性&#xff0c;支持很多参数设置来实现不同样式效果。 TextField组件可直接上手使用&#xff0c;但默认样式和输入规则并不一定是需求开发中想要的&#xff08;实话说默认样式并不好看&#xff09;。下面就通过Flutter TextField组件属性介绍来自定…

Android15 Beta更新速览

Android15 Beta更新速览 前台服务变更 前台服务使应用保持活动状态&#xff0c;以便它们可以执行关键且对用户可见的操作&#xff0c;通常以牺牲电池寿命为代价。在 Android 15 Beta 2 中&#xff0c;dataSync 和 mediaProcessing 前台服务类型现在具有约 6 小时的超时时间&a…

青春旅行家:大学生旅游创业的新星

在青春的岁月里&#xff0c;我们怀揣着梦想&#xff0c;渴望探索世界的每一个角落。对于普通高校的大学生而言&#xff0c;毕业季不仅是人生中的一次重要转折&#xff0c;更是实现梦想、放飞自我的绝佳时机。在这个特殊的时刻&#xff0c;一群年轻的大学生创业者凭借他们的智慧…

内网安全--隧道技术-CS上线本地

免责声明:本文仅做技术交流与学习...请勿非法搞破坏... ---隧道技术:硬刚网络协议,(你不让我走我偏走!) 解决不出网协议上线的问题&#xff08;利用出网协议进行封装出网&#xff09; 代理协议&#xff1a; SOCKS4/5 代理软件&#xff1a; SocksCap Proxifier ProxyChains(…

YOLOv8改进 | 融合模块 | 用Resblock+CBAM卷积替换Conv【轻量化网络】

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 在目标检测领域内,尽管YOLO系列的算法傲视群雄,但在某些方面仍然存在改进的空间。在YOLOv8提取特征的时候,由于卷积的缘故,会导致很多信息的丢失。而凯明大神的神作resnet可以减少信息的丢失。本文给大家带…

磁盘管理以及文件系统08

1、为什么要对磁盘进行分区&#xff1f; 业务层面&#xff1a;为满足一定的需求所是做的特定操作。 2、硬盘是什么&#xff0c;以及硬盘的作用 硬盘&#xff1a;计算机的存储设备&#xff0c;一个或者多个带磁性的盘组成的&#xff0c;可以在盘片上进行数据的读写。硬盘的最…

LVGL圆弧、线条、图片、色环、按钮矩阵、文本区域、键盘部件

目录 LVGL圆弧部件 LVGL线条部件 LVGL图片部件 LVGL色环部件 LVGL按钮矩阵部件 LVGL文本区域部件 LVGL键盘部件 LVGL圆弧部件 圆弧部件以弧形滑动的形式来调节、显示某个参数的值。 圆弧部件组成部分&#xff1a; 背景弧&#xff08;LV_PART_MAIN&#xff09; 前景弧&am…

Spring AOP 切面按照一定规则切片并行查询Mapper并返回

需求&#xff1a; 有时候我们在查询mapper层时&#xff0c;有时候可能由于入参数据过大或者查询的范围较大&#xff0c;导致查询性能较慢&#xff0c;此时 我们需要将原本的查询按照一定规则将查询范围进行切面&#xff0c;然后分片查询&#xff0c;最后将查询结果进行组装合并…

MySQL入门学习-查询进阶.CASE

CASE 表达式是一种在 SQL 中用于进行条件判断和分支执行的功能。它可以根据不同的条件返回不同的结果&#xff0c;类似于编程语言中的 if-else 语句。 一、CASE 表达式有两种主要形式&#xff1a;简单 CASE 表达式和搜索 CASE 表达式。 1、简单 CASE 表达式&#xff1a; CAS…

浏览器提示网站不安全怎么办?有什么解决办法吗?

当你在浏览器中访问一个网站时&#xff0c;如果看到提示说该网站不安全&#xff0c;这通常是由于网站没有使用SSL证书或者SSL证书存在问题。SSL证书在这里扮演着非常关键的角色&#xff0c;下面我会详细解释它的作用以及如何解决这类不安全提示。 SSL证书的作用&#xff1a; 1…

tkinter实现窗口嵌入桌面

在桌面插件例如日历&#xff0c;便签或桌面宠物等等应用&#xff0c;通常希望能够将软件的窗口钉在桌面上&#xff0c;同时又不影响打开的其他窗口&#xff08;即不是置顶&#xff0c;而是常驻与桌面&#xff0c;即使用wind也不会将其窗口关闭&#xff09;。许多桌面美化类软件…

【CTF Web】CTFShow web11 Writeup(RCE+PHP+代码审计)

web11 1 阿呆听完自己菜死了&#xff0c;自己呆了。决定修好漏洞&#xff0c;绝对不能让自己再菜死了。 解法 可知 flag 在 config.php。 <?php # flag in config.php include("config.php"); if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/system…

Vue3学习-组件之各种传参方式

props // 父界面传子界面 <childrenModu name"123" :getName"getName" /> // 父界面接收子界面数据 function getName(val:string){console.log(val) } // 子界面触发父界面函数 <button click"getName(11)"></button> // 子…

WorldSpace下的合批策略与ScreenSpace有什么区别

1&#xff09;WorldSpace下的合批策略与ScreenSpace有什么区别 2&#xff09;在iOS上用Metal取代OpenGL的多么 3&#xff09;在动画蓝图中将两个或多个动画同时融合到同一个网格 4&#xff09;Mipmap如何限定层级 这是第387篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的…

java面对对象编程-多态

介绍 方法的多态 多态是在继承&#xff0c;重载&#xff0c;重写的基础上实现的 我们可以看看这个代码 package b;public class main_ {public static void main(String[] args) { // graduate granew graduate(); // gra.cry();//这个时候&#xff0c;子类的cry方法就重写…

安全面试中的一个基础问题:你如何在数据库中存储密码?

3分钟讲解。 上周的面试故事 职位&#xff1a;初级安全工程师&#xff0c;刚毕业。 开始面试。 我&#xff1a;“这里你提到对数据安全有很好的理解。你能举例说明哪些方面的数据安全吗&#xff1f;” A&#xff1a;“当然。例如&#xff0c;当我们构建一个系统时&#xff0c;会…

结合Django和Vue.js构建现代Web应用

文章目录 1. 创建Django项目2. 配置Django后端3. 创建Vue.js前端4. 连接Django和Vue.js5. 构建和部署 在现代Web开发中&#xff0c;结合后端框架和前端框架是非常常见的&#xff0c;其中Django作为一种流行的Python后端框架&#xff0c;而Vue.js则是一种灵活强大的前端框架。本…

Spring Boot 中使用 Redis 和 Lua 脚本实现一个延时队列

效率工具 推荐一个程序员的常用工具网站&#xff0c;效率加倍嘎嘎好用&#xff1a;程序员常用工具 云服务器 云服务器限时免费领&#xff1a;轻量服务器2核4G腾讯云&#xff1a;2核2G4M云服务器新老同享99元/年&#xff0c;续费同价阿里云&#xff1a;2核2G3M的ECS服务器只需99…

仿冒、钓鱼、入侵……警惕邮件安全这些“坑”

为了保证用户对电子邮箱系统的安全使用&#xff0c;保证个人的隐私和财产的安全&#xff0c;我们呼吁每个人都要加强自己的网络安全意识&#xff0c;在对电子邮件进行处理的时候&#xff0c;要对钓鱼邮件进行认真的识别&#xff0c;同时还需要设定一个客户的密码来保证你的邮箱…