当前位置: 首页 > news >正文

代码随想录训练营Day15 | 530.二叉搜索树的最小绝对差 - 501.二叉搜索树中的众数 - 236. 二叉树的最近公共祖先

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

  • 题目链接:530.二叉搜索树的最小绝对差
  • 思路:中序遍历二搜索叉树,遍历结果是一个升序数组,所以差值产生于遍历结果中任意两个相邻的两个数,故使用pre记录上一次遍历的值,然后和当前值相减得到差值,每次取最小差值即可
  • 代码:
class Solution {
public:void dfs(TreeNode* root, int& pre, int& ans) {if (root == nullptr) {return;}dfs(root->left, pre, ans); // 先遍历左子树if (pre == -1) {pre = root->val; // 等于当前值} else {ans = min(ans, root->val - pre); // 取最小差值pre = root->val; // 记录当前遍历的节点值}dfs(root->right, pre, ans);}int getMinimumDifference(TreeNode* root) {int ans = INT_MAX, pre = -1; // pre = -1 取二叉树节点中没有的值dfs(root, pre, ans);return ans;}
};

501.二叉搜索树中的众数

  • 题目链接:501.二叉搜索树中的众数
  • 思路:中序遍历二叉搜索树,遍历结果是升序的,故相同的数一定是排列在一块儿的,所以遍历时记录上一次遍历节点的结果,和遍历节点的最大子树,每遍历一个节点更新一下
  • 代码:
class Solution {
private:int max_cnt = 0;            // 最大频次int cnt = 0;                // 当前元素出现频次TreeNode* pre = nullptr;    // 前驱节点vector<int> res;            // 保存众数void dfs(TreeNode* root)    // 中序遍历{if (root == nullptr) return;dfs(root->left);if (pre && pre->val == root->val)cnt++;      // 与前驱相同,频次++  elsecnt = 1;    // 是没前驱的首个节点,或非重复元素,频次初始化if (cnt == max_cnt) // 成为了众数之一 res.push_back(root->val);if (cnt > max_cnt)  // 频次突破新高,成为众数,并且之前的众数无效了{res.clear();max_cnt = cnt;res.push_back(root->val);}        pre = root;     // 更新前驱dfs(root->right);}
public:vector<int> findMode(TreeNode* root) {dfs(root);return res;}
};

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

  • 题目链接:236. 二叉树的最近公共祖先
  • 思路:遍历二叉树,遍历左右子树,如果找到p或q,返回当前节点,如果没找到返回NULL,如果左右子树找到只找到一个,返回找到的节点,左右子树都找到,返回当前节点
  • 代码:
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); // 左子树查找p,qTreeNode* right = lowestCommonAncestor(root->right, p, q); // 右子树查找p,qif(left == NULL) return right; if(right == NULL) return left; // 只找到其中一个就返回另外一个return root; // 都找到返回当前节点}
};

http://www.mrgr.cn/news/65276.html

相关文章:

  • Vue3的router和Vuex的学习笔记整理
  • 【算法】Prim最小生成树算法
  • proxypin抓包快速补axios环境
  • 大数据与智能算法助力金融市场分析:正大的技术创新探索
  • 程序《工资分类收税》
  • 电能表预付费系统-标准传输规范(STS)(33)
  • 15.函数的重载
  • 04741计算机网络原理真题-CRC的计算-案例分析
  • PHP+MySQL开发的一套招聘管理系统开发案例源码功能介绍
  • H5页面在线预览pdf
  • 照明灯十大知名品牌有哪些?2024灯具十大公认品牌排行榜出炉!
  • SpringMVC课时2
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十. 多线程控制帧率。循环播放,QT connect 细节,
  • SpringBoot新闻稿件管理系统:开发与实践
  • 亚马逊营销邮件:高效策略提升邮件转化率!
  • 前端项目配置文件的各种配置
  • STM32HAL-最简单的长、短、多击按键框架(多按键)
  • 百度社招内推
  • ‌RS485是什么?
  • 拼多多2025秋招多模态大模型搜广推面试题
  • 基于MySQL的企业专利数据高效查询与统计实现
  • 城市防洪新篇章:城市内涝一维二维耦合模拟;水动力模型;水质模拟;海绵城市关键控制指标计算;城市排水系统,SWMM模型;慧天内涝软件
  • Chrome 130 版本新特性 Chrome 130 版本发行说明
  • 嵌入式调试手段(一):使用串口工具
  • PHP单商户多门店会员管理系统小程序源码
  • RDD转换算子:【map】