代码随想录_二叉树_leetcode530 501

news/2024/11/30 0:32:35/

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

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

给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。

差值是一个正数,其数值等于两值之差的绝对值。

示例 1:

输入:root = [4,2,6,1,3]
输出:1

示例 2:

输入:root = [1,0,48,null,null,12,49]
输出:1

 代码

//leetcode 530 二叉搜索树的最小绝对差
//迭代保存就行
class Solution {
public:int getMinimumDifference(TreeNode* root) {int result = INT_MAX;stack<TreeNode*> treeSta;TreeNode* pre = nullptr;TreeNode* cur = root;while (!treeSta.empty() || cur != nullptr){while (cur != nullptr){treeSta.push(cur);cur = cur->left;}cur = treeSta.top();treeSta.pop();if(pre != nullptr){result = min(result, cur->val - pre->val);}pre = cur;cur = cur->right;}return result;}
};

leetcode 501. 二叉搜索树中的众数

501. 二叉搜索树中的众数

给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。

如果树中有不止一个众数,可以按 任意顺序 返回。

假定 BST 满足如下定义:

  • 结点左子树中所含节点的值 小于等于 当前节点的值
  • 结点右子树中所含节点的值 大于等于 当前节点的值
  • 左子树和右子树都是二叉搜索树

示例 1:

输入:root = [1,null,2,2]
输出:[2]

示例 2:

输入:root = [0]
输出:[0]

 

 代码

//leetcode 501. 二叉搜索树中的众数
// 普通做法就是对于任何二叉树而言
// 定义一个map 然后 遍历结点 然后按照map排序即可
class Solution {
public:vector<int> findMode(TreeNode* root) {unordered_map<int, int> countMap; // 结点值--频率vector<int> result;queue<TreeNode*> treeQue;treeQue.push(root);while (!treeQue.empty()){TreeNode* cur = treeQue.front();treeQue.pop();countMap[cur->val]++;if (cur->left != nullptr){treeQue.push(cur->left);}if (cur->right != nullptr){treeQue.push(cur->right);}}//遍历countMapint max_count = INT_MIN;for (auto iter = countMap.begin(); iter != countMap.end(); iter++){if (max_count < iter->second){result.clear();result.push_back(iter->first);max_count = iter->second;}else if (max_count == iter->second){result.push_back(iter->first);}}return result;}
};


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

相关文章

手撕深度学习中的优化器

深度学习中的优化算法采用的原理是梯度下降法&#xff0c;选取适当的初值params&#xff0c;不断迭代&#xff0c;进行目标函数的极小化&#xff0c;直到收敛。由于负梯度方向时使函数值下降最快的方向&#xff0c;在迭代的每一步&#xff0c;以负梯度方向更新params的值&#…

竞赛无人机搭积木式编程——以2022年TI电赛送货无人机一等奖复现为例学习(7月B题)

在学习本教程前&#xff0c;请确保已经学习了前4讲中无人机相关坐标系知识、基础飞行控制函数、激光雷达SLAM定位条件下的室内定点控制、自动飞行支持函数、导航控制函数等入门阶段的先导教程。 同时用户在做二次开发自定义的飞行任务时&#xff0c;可以参照第5讲中2021年国赛植…

编程的核心目的:计算数据

编程的核心目的是通过程序设计实现对数据的计算。计算数据涉及到对数据的获取、变量类型的定义、算术和逻辑运算、条件和循环控制等广泛的计算机科学概念和技术。 对数据的获取可以通过硬编码、用户输入等方式实现。变量类型的定义则是程序中的数据类型、这些类型确保数据的安…

【软考备战·希赛网每日一练】2023年4月10日

文章目录一、今日成绩二、错题总结第一题第二题三、知识查缺题目及解析来源&#xff1a;2023年04月10日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析&#xff1a; 本题属于专业英语&#xff0c;大体了解意思即可。 题目大意&#xff1a; 第二题 解析&#xff1a…

java面试题-基础问题-如何理解Java中的多态?

如何理解Java中的多态&#xff1f;如何理解Java中的多态&#xff1f;典型回答扩展知识方法的重载与重写重载和重写的区别如何理解Java中的多态&#xff1f; 典型回答 多态的概念比较简单&#xff0c;就是同一操作作用于不同的对象&#xff0c;可以有不同的解释&#xff0c;产…

哪个网站的电子书最多?

程序员宝藏库&#xff1a;https://gitee.com/sharetech_lee/CS-Books-Store 随便找一个电子书导航&#xff0c;就会给你提供几十个电子书下载网站。 然而&#xff0c;当真正用到时会发现&#xff0c;质量层次不齐&#xff0c;在绝大多数时候试遍几十个网站都找不到自己想要的书…

分享初用Jmeter时可能遇到的一些问题

很多朋友在刚刚接触jmeter的时候会遇到各种各样感觉稀奇古怪的问题&#xff0c;明明请求对了却总是返回不如意的结果&#xff0c;jmeter功能强大&#xff0c;但没有postman那样的界面简洁易上手的特性&#xff0c;本文分享在最初接触jmeter时有可能会遇到的问题&#xff0c;让各…

MySQL架构

文章目录前言MySQL的架构1.连接层2.查询分析器3.优化器4.执行引擎5.存储引擎总结前言 MySQL是一个非常流行的关系型数据库管理系统&#xff0c;具有很好的可靠性和性能。然而&#xff0c;由于MySQL是一个多用户系统&#xff0c;因此必须使用并发控制来处理多个用户之间的并发访…