代码随想录算法训练营第15天|530.二叉搜索树的最小绝对差,501.二叉搜索树中的众数,236.二叉树的最近公共祖先
530. 二叉搜索树的最小绝对差看到题目的第一想法如果列成数组去计算绝对差应该也不难但是不知道递归求差应该怎么做看完代码随想录的第一想法感觉跟上一题98.验证二叉搜索树很相似上一题存的是最大值去比较这道题存的是上一节点去比较用自己的话描述根据上一题的做题思路利用递归的过程存下上一个递归的节点然后让当前节点和上一个递归的节点比较得出他们之间的差值进行下一次的比较代码/** * 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; * } * } */classSolution{privateTreeNodeprenull;privateintresultInteger.MAX_VALUE;publicintgetMinimumDifference(TreeNoderoot){findTreeNode(root);returnresult;}publicvoidfindTreeNode(TreeNoderoot){if(rootnull){return;}findTreeNode(root.left);if(pre!null){resultMath.min(result,root.val-pre.val);}preroot;findTreeNode(root.right);}}实现过程中遇到哪些困难无今日收获记录一下自己的学习时长熟悉了二叉搜索树的使用 14.02-15.00501. 二叉搜索树中的众数看到题目的第一想法想不到怎么去解这道题目看完代码随想录的第一想法不用二叉搜索树的做法就全遍历一遍翻入Map然后再转成数组进行排序最后得出结果用二叉搜索树的做法跟上一题 二叉树搜索树的最小绝对差 一样都要定义一个前一个节点的指针然后一直累计这个一样的数在二叉搜索树中众数一定是相邻的用自己的话描述看注释吧代码/** * 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; * } * } */classSolution{TreeNodepre;intcount;intmaxCount;ArrayListIntegerresList;publicint[]findMode(TreeNoderoot){//递归三部曲//1.找到递归参数和返回值//2.找到递归的终止条件//3.找到递归的单层遍历是什么//要记录前节点用中序遍历//1.递归参数是当前节点没有返回值因为不需要判断什么只需要遍历完一遍整个二叉搜索树//2.当遇到空节点就返回//3.递归单层先进行左子树的递归看看当前的值是不是等于上一个节点的值如果不是就设置计算器为1如果是就在计算器上加1//然后再判断计数器是不是大于当前的数值大于的话就重置一下最大值等于的话就加上这个节点的数然后进入右子节点的递归prenull;count0;maxCount0;resListnewArrayList();findTreeMode(root);int[]resnewint[resList.size()];inti0;for(intr:resList){res[i]r;}returnres;}publicvoidfindTreeMode(TreeNoderoot){if(rootnull){return;}findTreeMode(root.left);if(prenull){count1;}elseif(root.valpre.val){count;}else{count1;}if(countmaxCount){resList.clear();resList.add(root.val);maxCountcount;}elseif(countmaxCount){resList.add(root.val);}preroot;findTreeMode(root.right);}}实现过程中遇到哪些困难无今日收获记录一下自己的学习时长二叉搜索树的数如果是一样那就会连续 21.31-22.47236. 二叉树的最近公共祖先看到题目的第一想法感受到了很难想不到有什么解法看完代码随想录的第一想法原来是通过对节点的判断然后找到公共祖先用自己的话描述通过递归遍历整个树然后递归的途中如果遇到指定节点就返回如果左右都是指定节点就返回当前节点算做公共祖先代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val x; } * } */classSolution{publicTreeNodelowestCommonAncestor(TreeNoderoot,TreeNodep,TreeNodeq){//递归三部曲//1.找到递归参数和返回值//2.找到递归的终止条件//3.找到递归的单层遍历是什么//因为是自底向上找数所以用后序遍历//1.递归参数为当前节点和搜索的节点pq返回值为节点如果只是找到的话返回true就行但是还要返回公共节点于是返回值为节点//2.找到qp或null就返回当前节点//3.先看当前节点是不是为null或指定节点如果是就返回当前节点//然后先将左右子节点先递归回来看看底下有没有指定的节点如果有就返回那一边的节点如果都有那当前节点就是公共祖先返回当前节点if(rootnull||rootp||rootq){returnroot;}TreeNodeleftlowestCommonAncestor(root.left,p,q);TreeNoderightlowestCommonAncestor(root.right,p,q);if(leftnullrightnull){returnnull;}elseif(left!nullrightnull){returnleft;}elseif(leftnullright!null){returnright;}else{returnroot;}}}实现过程中遇到哪些困难不能理解怎么去判断公共祖先今日收获记录一下自己的学习时长对于后序遍历的理解就是需要遍历整个树的时候就需要用到这一点更加深刻了 22.48-23.55

相关新闻

Linux进程与线程(2)

Linux进程与线程(2)

一、什么是线程 线程被称作轻量级进程,是完成任务创建、调度、消亡的执行单元。 进程内部可以存在多个线程,所有线程共享进程的资源,每个线程拥有自己独立栈空间。 二、进程与线程核心区别 进程:操作系统资源分配最小单元 每个进程…

2026/10/25 19:33:49 阅读更多 →
能效 1.5–1.9 倍、延迟 1.7–3.6 倍:OpenAI Jalapeño 首批跑分追平英伟达 GB300,单芯片额定 700W

能效 1.5–1.9 倍、延迟 1.7–3.6 倍:OpenAI Jalapeño 首批跑分追平英伟达 GB300,单芯片额定 700W

能效 1.5–1.9 倍、延迟 1.7–3.6 倍:OpenAI Jalapeo 首批跑分追平英伟达 GB300,单芯片额定 700W 2026 年 8 月 25 日,OpenAI 在 Hot Chips 2026 大会上首次公开自研推理芯片 Jalapeo 的基准测试结果:用 700W 单卡功耗&#xff0c…

2026/10/24 17:32:51 阅读更多 →
多协议RF与NFC:BLE MCU重塑智能设备连接与配网体验

多协议RF与NFC:BLE MCU重塑智能设备连接与配网体验

前阵子做智能家居网关的选型,被一个问题卡了很久:既要BLE连手机App,又要兼容Zigbee子设备,还得让用户碰一碰就能完成配网。如果能用一颗芯片把 BLE、802.15.4、NFC 全解决,成本和功耗都能省一大截。放到五年前这基本是…

2026/11/6 12:04:46 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/8 1:19:03 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/8 14:17:55 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/9 1:59:56 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/8 1:38:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/7 12:08:40 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/8 1:23:14 阅读更多 →

日新闻

周新闻

月新闻