day-21 代码随想录算法训练营(19)二叉树part07

news/2024/11/17 4:55:35/

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

思路一:二叉搜索树的中序遍历必为升序数组,加入数组后计算相邻两个数差值,即可求出最小绝对差

思路二:同样的思路,中序遍历,直接使用指针记录上一个节点,同时更新差值
class Solution {
public:int res=INT_MAX;TreeNode*pre=nullptr;void judge(TreeNode*root){if(root==nullptr) return;judge(root->left);if(pre!=nullptr)res=min(res,root->val-pre->val);pre=root;judge(root->right);}int getMinimumDifference(TreeNode* root) {//思路二:双指针递归,中序遍历,计算两节点之间差值judge(root);return res;}
};

501.二叉搜索树中的众数

思路一:使用map和vector,遍历二叉搜索树用map记录元素出现的次数,一次遍历map求出最大次数,二次遍历map求出等于最大次数的值,加入到vector中思路二:使用指针记录pre前一个元素,当pre元素和当前cur元素相等时,更新count值;当pre元素和当前cur元素不等时,使用count更新最大次数值maxNum;
当count值大于maxNum时,清空数组,把新的元素加入数组;
当count值等于maxNum时,把该元素加入数组

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

思路一:第一次遍历二叉树使用左0右1来记录p和q的路径,然后找出两个路径的相同值,再使用该相同值去遍历二叉树,最后遍历到的值即为最近公共祖先

思路二:(自底向上)后序遍历,考虑两个指定值的分布情况,使用两个指针保存两个指定值,找到直接返回,找不到返回nullptr
class Solution {
public:TreeNode*judge(TreeNode*root,TreeNode*p,TreeNode*q){if(root==nullptr) return root; if(root==p || root==q) return root;//遍历到值时直接返回TreeNode*left=judge(root->left,p,q);TreeNode*right=judge(root->right,p,q);if(left!=nullptr && right!=nullptr) return root;//指定值分布再两侧if(right!=nullptr) return right;//指定值分布在右侧if(left!=nullptr) return left;//指定值分布在左侧return nullptr;//重点:左右都不存在需返回nullptr}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {//后序遍历return judge(root,p,q);}
};


http://www.ppmy.cn/news/1032983.html

相关文章

从public static void main(String[] args)看如何构造数据

java语言中public static void main(String[] args)里面的ages有什么作用? 在Java语言中,public static void main(String[] args) 是一个特殊的方法,它是Java程序的入口点。当你运行一个Java程序时,程序会从这个方法开始执行。这…

86. 分隔链表

86. 分隔链表 题目-中等难度示例1. 新建两链表,根据x值分类存放,最后合并 题目-中等难度 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保…

4WRAP6W7-08-30=G24K4/M=00比例先导阀控制放大器

先导控制阀是直动式比例阀。控制边的尺寸经过优化,可用作比例方向阀型号 4WRKE 的先导控制阀。 比例电磁铁为带可拆卸线圈的耐压密闭型湿式插脚交流线圈。 它们可将电流按比例转换为机械力。电流强度的增加会导致磁力相应增加。设定的磁力会在整个控制行程中保持不…

理解jvm之对象已死怎么判断?

目录 引用计数算法 什么是引用 可达性分析算法(用的最多的) 引用计数算法 定义:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一&#xff1…

Redis_缓存2_缓存删除和淘汰策略

14.5 缓存数据的删除和替换 14.5.1 过期数据 可以使用ttl查看key的状态。已过期的数据,redis并未马上删除。优先去执行读写数据操作,删除操作延后执行。 14.5.2 删除策略 redis中每一个value对应一个内存地址,在expires,一个内…

Gof23设计模式之模板方法模式

1.定义 定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 2.结构 模板方法(Template Method)模式包含以下主要角色: 抽象类&#xff0…

微短剧:长、短视频的新生意

最近几年,微短剧愈发的火了。据广电总局官方数据,2022年上半年,在广电总局系统进行规划备案的微短剧已达2859部,总集数69234集。要知道,在2021年,全年内备案的微短剧数量仅为398部。由此足见,微…

vscode | linux | c++ intelliense 被弃用解决方案

每日一句,vscode用的爽是爽,主要是可配置太强了。如果也很会研究,可以直接去咸鱼接单了 废话少说,直接整。 用着用着说是c intelliense被弃用,很多辅助功能无法使用,像查看定义、查看引用、函数跳转、智能提…