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

算法训练营day23补签

 题目1:530. 二叉搜索树的最小绝对差 - 力扣(LeetCode)

class Solution {
public:int reslut = INT_MAX;TreeNode* pre = NULL;void trackingback(TreeNode* node) {if(node == NULL) return;trackingback(node->left);if(pre != NULL) {reslut = min(reslut, node->val - pre->val);}pre = node;trackingback(node->right);}  int getMinimumDifference(TreeNode* root) {trackingback(root);return reslut;}
};

 题目2:501. 二叉搜索树中的众数 - 力扣(LeetCode)

// 中序遍历用map记录每个数出现的个数,然后找最大的
class Solution {
public:unordered_map<int, int> map;void trackingback(TreeNode* node) {if(node == NULL) return;trackingback(node->left);if(map.find(node->val) != map.end()) {map[node->val]++;}else {map.insert(pair<int, int>(node->val, 1));}trackingback(node->right);}vector<int> findMode(TreeNode* root) {vector<int> reslut;trackingback(root);int num = 1;for(auto iter =map.begin();iter != map.end();iter++) {if(iter->second > num) {num = iter->second;}}for(auto iter =map.begin();iter != map.end();iter++) {if(iter->second == num) {reslut.push_back(iter->first);}}return reslut;}
};

在递归里操作,主要就是更新maxcount 然后要把reslut也更新 

class Solution {
public:vector<int> reslut;int count = 0;int maxcount = 0;TreeNode* pre = NULL;void trackingback(TreeNode* node) {if(node == NULL) return;trackingback(node->left);if(pre == NULL) {count = 1;}else if(pre->val == node->val) {count++ ;}else if(pre->val != node->val) {count = 1;}pre = node;if(count == maxcount) {reslut.push_back(node->val);}if(count > maxcount) {reslut.clear();maxcount = count;reslut.push_back(node->val);}trackingback(node->right);}vector<int> findMode(TreeNode* root) {trackingback(root);return reslut;}
};

 题目3:236. 二叉树的最近公共祖先 - 力扣(LeetCode)

class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(root == NULL) return NULL;if(root == p || root == q) return root;TreeNode* leftnode = lowestCommonAncestor(root->left, p, q);TreeNode* rightnode = lowestCommonAncestor(root->right, p, q);if(rightnode != NULL && leftnode != NULL) return root;else if(rightnode == NULL && leftnode != NULL) return leftnode;else if(rightnode != NULL && leftnode == NULL) return rightnode;else return NULL;}
};

http://www.lryc.cn/news/373105.html

相关文章:

  • 国密SM2JS加密后端解密
  • Cheat Engine.exe修改植物大战僵尸阳光与冷却
  • python内置模块之queue(队列)用法
  • Spring Security——结合JWT实现令牌的验证与授权
  • Vector的底层结构剖析
  • 实现抖音视频滑动功能vue3+swiper
  • Linux文件系统【真的很详细】
  • JAVA学习笔记DAY5——Spring_Ioc
  • WPF中的隧道路由和冒泡路由事件
  • ISO七层模型 tcp/ip
  • MySQL的三种重要的日志
  • 神经网络学习2
  • Spring Boot整合Redis通过Zset数据类型+定时任务实现延迟队列
  • Android入门第69天-AndroidStudio中的Gradle使用国内镜像最强教程
  • 深入浅出 Qt 中 QListView 的设计思想,并掌握大规模、高性能列表的实现方法
  • 课设--学生成绩管理系统
  • MySQL性能分析
  • 为什么要学习Flink系统管理及优化课程?
  • 把本机的bash构建到docker镜像里面
  • 【数据分析】推断统计学及Python实现
  • 探索交互的本质:从指令到界面的演进与Linux基础指令的深入剖析
  • uniapp vue分享功能集成
  • 软件工程实务:软件产品
  • 带侧边栏布局:带导航的网页
  • react学习-redux快速体验
  • 基于flask的网站如何使用https加密通信-问题记录
  • 记C#优化接口速度过程
  • windows环境如何运行python/java后台服务器进程而不显示控制台窗口
  • 记周末百度云防御CC攻击事件
  • vue中v-bind控制class和style