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

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

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录

视频讲解:二叉搜索树中,需要掌握如何双指针遍历!| LeetCode:530.二叉搜索树的最小绝对差_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com, 这里刷题顺序,详细题解,应有尽有!, 视频播放量 28526、弹幕量 339、点赞数 604、投硬币枚数 390、收藏人数 116、转发人数 39, 视频作者 代码随想录, 作者简介 哈工大师兄,在腾讯、百度搬过砖,代码随想录网站:programmercarl.com,相关视频:不仅双指针,还有代码技巧可以惊艳到你! | LeetCode:501.二叉搜索树中的众数,你对二叉搜索树了解的还不够! | LeetCode:98.验证二叉搜索树,单调队列正式登场!| LeetCode:239. 滑动窗口最大值,手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找,又是构造二叉树,又有很多坑!| LeetCode:654.最大二叉树,不愧是搜索树,这次搜索有方向了!| LeetCode:700.二叉搜索树中的搜索,帮你拿下反转链表 | LeetCode:206.反转链表 | 双指针法 | 递归法,关于二叉树,你该了解这些!| 二叉树理论基础一网打尽,二叉树的种类、二叉树的存储方式、二叉树节点定义、二叉树的遍历顺序,要理解普通二叉树和完全二叉树的区别! | LeetCode:222.完全二叉树节点的数量,新学期要从学习二叉树开始! | LeetCode:101. 对称二叉树icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1DD4y11779

思路:中序遍历,用一个指针指向上一个节点,然后比较。

/*** 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 {TreeNode pre = null;int min = Integer.MAX_VALUE;public int getMinimumDifference(TreeNode root) {getMinAbs(root);return min;}public void getMinAbs(TreeNode root) {if (root == null) {return;}getMinimumDifference(root.left);if (pre != null) {min = Math.min(min,Math.abs(root.val-pre.val));}pre = root;getMinimumDifference(root.right);}
}

 501.二叉搜索树中的众数

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录

视频讲解:不仅双指针,还有代码技巧可以惊艳到你! | LeetCode:501.二叉搜索树中的众数_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com, 这里刷题顺序,详细题解,应有尽有!, 视频播放量 79660、弹幕量 487、点赞数 1515、投硬币枚数 836、收藏人数 1180、转发人数 90, 视频作者 代码随想录, 作者简介 哈工大师兄,在腾讯、百度搬过砖,代码随想录网站:programmercarl.com,相关视频:二叉搜索树中,需要掌握如何双指针遍历!| LeetCode:530.二叉搜索树的最小绝对差,调整二叉树的结构最难!| LeetCode:450.删除二叉搜索树中的节点,二叉搜索树找祖先就有点不一样了!| 235. 二叉搜索树的最近公共祖先,手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找,你对二叉搜索树了解的还不够! | LeetCode:98.验证二叉搜索树,回溯算法如何分割字符串并判断是合法IP?| LeetCode:93.复原IP地址,还得用回溯算法!| LeetCode:17.电话号码的字母组合,坑很多!来看看你掉过几次坑 | LeetCode:106.从中序与后序遍历序列构造二叉树,回溯算法求解全排列,如何去重?| LeetCode:47.全排列 II,新学期要从学习二叉树开始! | LeetCode:101. 对称二叉树icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1fD4y117gp

思路:中序遍历,和在数组中找频率最高的数差不多。由于众数可能不止一个,所以当count>maxCount时,清除收集到的众数,再添加最新的元素。

/*** 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 {TreeNode pre;int maxCount = Integer.MIN_VALUE;int count = 0;ArrayList<Integer> result;public int[] findMode(TreeNode root) {result = new ArrayList<>();findModeByInOrder(root);int[] array = result.stream().mapToInt(Integer::intValue).toArray();return array;}public void findModeByInOrder(TreeNode root) {if (root == null) {return;}findModeByInOrder(root.left);if (pre == null) {count = 1;} else if (pre.val == root.val) {count++;} else {count = 1;}pre = root;if (count == maxCount) {result.add(root.val);} else if (count > maxCount) {result.clear();result.add(root.val);maxCount=count;}findModeByInOrder(root.right);}
}

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

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录

视频讲解:自底向上查找,有点难度! | LeetCode:236. 二叉树的最近公共祖先_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com, 这里刷题顺序,详细题解,应有尽有!, 视频播放量 55175、弹幕量 725、点赞数 1743、投硬币枚数 1285、收藏人数 393、转发人数 95, 视频作者 代码随想录, 作者简介 哈工大师兄,在腾讯、百度搬过砖,代码随想录网站:programmercarl.com,相关视频:二叉树的最近公共祖先,数据结构每日一代码题寻找P 和Q的最近公共祖先(自留,二叉树的最近公共祖先:看动画学做算法题,数据结构每日代码题:找到值为X的所有祖先(自留,寻找值为X的节点的所有祖先节点,D09 倍增算法 P3379【模板】最近公共祖先(LCA)——信息学奥赛算法,递归方法寻找二叉树任意的两个节点的最近公共祖先 含代码展示和思路讲解,23王道数据结构 150页13题 二叉树 寻找最近公共祖先,23王道数据结构 134页05题 求二叉树公共祖先代码,数据结构-求二叉树的宽度(层序遍历的改写|分析+手写伪代码)icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1jd4y1B7E2

思路: 回溯自底向上查找,先查找左右子树是否有要找的节点,如果有则返回节点,没有则返回null,根节点根据左右子树查找结果来确定返回值,如果都为null,则说明该树没有要查找的节点,如果都不为null,则说明该根节点就是最近公共父节点,如果一个为null,一个不为null,那么直接返回不为null的值。

/*** 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== p || root == q || root == null) {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 right;} else if (left != null && right == null) {return left;}return root;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

大数据分析案例-基于随机森林算法的智能手机价格预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

mtr mysql-test-run.pl — Run MySQL Test Suite

The mysql-test-run.pl Perl script is the main application used to run the MySQL test suite. pl Perl脚本是用来运行MySQL测试套件的主要应用程序。 It invokes mysqltest to run individual test cases. 它调用mysqltest来运行单独的测试用例。 Invoke mysql-test-run.pl…

华为云计算知识总结——及案例分享

目录 一、华为云计算基础知识二、华为云计算相关案例实战案例一&#xff1a;搭建弹性云服务器&#xff08;ECS&#xff09;并部署Web应用案例二&#xff1a;构建基于OBS的图片存储和分发系统案例三&#xff1a;基于RDS的高可用数据库应用案例四&#xff1a;使用华为云DDoS防护保…

计算合约方法的签名

计算合约方法的签名 通过智能合约实现 // SPDX-License-Identifier: MIT pragma solidity ^0.8.26;contract FunctionSelector {/*"transfer(address,uint256)"0xa9059cbb"transferFrom(address,address,uint256)"0x23b872dd*/function getSelector(stri…

Ant-Dseign-Pro如何去国际化及删除oneapi.json后出现程序直接结束问题的解决方案

作者&#xff1a;CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境&#xff1a;WebStorm 移除国际化 什么是国际化 在AntDesignPro当中&#xff0c;国际化就是如果你初始默认使用中文&#xff0c;想要切换英文&#xff0c;我们可以切换到英文模式。同时&#x…

太速科技-9-基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡

基于DSP TMS320C6678FPGA XC7V690T的6U VPX信号处理卡 一、概述 本板卡基于标准6U VPX 架构&#xff0c;为通用高性能信号处理平台&#xff0c;系我公司自主研发。板卡采用一片TI DSP TMS320C6678和一片Xilinx公司Virtex 7系列的FPGA XC7V690T-2FFG1761I作为主处理器&#…

Mysql当中的各种log

一、MySQL日志文件类型 重做日志&#xff08;redo log&#xff09;回滚日志&#xff08;undo log&#xff09;二进制日志&#xff08;binlog&#xff09;错误日志&#xff08;errorlog&#xff09;慢查询日志&#xff08;slow query log&#xff09;一般查询日志&#xff08;g…

自定义规则配置教程

大家在使用waf的时候&#xff0c;因为业务特殊性和waf的严格校验&#xff0c;有时会产生误报&#xff0c;阻拦合法流量。 这个时候&#xff0c;只能通过自定义规则进行补充&#xff0c;选择加白名单或者黑名单。 很多人会说配置黑白名单失效了&#xff0c;其实95%以上都是自己…

Java项目:图书管理系统(有源代码)

Java项目&#xff1a;图书管理系统&#xff08;有源代码&#xff09; 直接上项目实现效果&#xff0c;文末有源码获取方式 一、技术选型 • Spring Boot、Vue、MySQL、Redis 二、功能说明 用户功能 图书查询功能 读者规则功能 查看公告 个人信息 借阅信息 违章信息 读者留言…

鸿蒙生态崛起:开发者机遇、挑战与未来展望

背景 鸿蒙系统不断发展&#xff0c;有与安卓、iOS 形成三足鼎立之势&#xff0c;且其在智能手机、智能穿戴、车载、家居等行业领域的应用越来越广泛。作为开发者&#xff0c;如何抓住鸿蒙生态崛起的机遇&#xff0c;解决开发挑战&#xff0c;创造更好的应用体验&#xff1f;欢…

MYSQL复合查询

当我们要查询的数据要使用的限制条件不是很简单的时候&#xff0c;可能要在一个限制条件下再次限制&#xff0c;比如要查找小美所在公司的平均薪资&#xff0c;就要先找到小美的公司&#xff0c;再求平均薪资。复合查询分三种&#xff0c;多表连接查询、子句查询和合并查询。 …

【论文阅读笔记】VLP: A Survey on Vision-language Pre-training

目录 前言2 特征提取&#xff08;Feature extraction&#xff09;2.1.1 图象特征提取OD-based Region feature / RoIFreeze the pre-trained object detectorsGrid features&#xff08;网格特征&#xff09;CNN-GFsEnd-to-End Training&#xff08;端到端训练&#xff09;ViT-…

U盘插入电脑不显示?别急,这里有解决方案!

随着科技的飞速发展&#xff0c;U盘已成为我们日常生活和工作中不可或缺的数据存储工具。然而&#xff0c;你是否遇到过这样的情况&#xff1a;满心欢喜地将U盘插入电脑&#xff0c;却发现电脑竟然“视而不见”&#xff0c;U盘图标迟迟不出现&#xff1f;别急&#xff0c;这种情…

如何使用Web-Check和cpolar实现安全的远程网站监测与管理

文章目录 前言1.关于Web-Check2.功能特点3.安装Docker4.创建并启动Web-Check容器5.本地访问测试6.公网远程访问本地Web-Check7.内网穿透工具安装8.创建远程连接公网地址9.使用固定公网地址远程访问 前言 本期给大家分享一个网站检测工具Web-Check&#xff0c;能帮你全面了解网…

【第一个qt项目的实现和介绍以及程序分析】【正点原子】嵌入式Qt5 C++开发视频

qt项目的实现和介绍 1.第一个qt项目  &#xff08;1).创建qt工程    [1].创建一个存放qt的目录    [2].新建一个qt工程    [3].编译第一个工程    发生错误时的解决方式 二.QT文件介绍  (1).工程中文件简单介绍  (2).项目文件代码流程介绍    [1].添…

【Linux】命令行参数 | 环境变量

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;青果大战linux 总有光环在陨落&#xff0c;总有新星在闪烁 前几天在搞硬件&…

【数据结构与算法】第7课—数据结构之队列

文章目录 1. 队列1.1 什么是队列1.2 队列的结构1.3 队列初始化1.4 队列入栈1.5 出队列1.6 查找队列有效元素个数1.7 取队头和队尾数据1.8 销毁链表 2. 用两个队列实现栈3. 用两个栈实现队列4. 循环队列 1. 队列 注&#xff1a;文中Queue是队列&#xff0c;Quene是错误写法 1.1 …

数据结构 ——— 向上/向下调整算法将数组调整为升/降序

目录 向上调整算法&#xff08;默认小堆&#xff09; 向下调整算法&#xff08;默认小堆&#xff09; 利用向上调整算法对现有数组直接建堆 利用向下调整算法对以建成的小堆数组排降序 举一反三&#xff1a; 那么如何将数组 a 排成升序呢&#xff1f; 向上调整算法&…

一种基于GPU的归并排序并行实现

0️⃣归并排序流程 分割过程&#xff1a;将待排序数组等分为左右子数组&#xff0c;再对左右子数组递归式等分&#xff0c;直至不可分割合并过程&#xff1a;将所有子数组两两递归合并&#xff0c;逐步得到较大有序数组&#xff0c;直到得到完整有序数组 1️⃣传统的并行归并 …

【MySQL】数据类型

目录 一、常见数据类型汇总 二、数值类型 2.1 tinyint 2.2 bit 2.3 float 2.4 decimal 三、字符串类型 3.1 char 3.2 varchar 四、日期和时间类型 五、枚举和集合 5.1 enum枚举 5.2 set集合 一、常见数据类型汇总 分类数据类型说明数值类型BIT(M)二进制位。M指定…