代码随想录_二叉树_leetcode530 501

news2025/6/12 21:28:42

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);
			}
		}
		//遍历countMap
		int 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.coloradmin.cn/o/412237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGTP如此强大,我们普通人如何利用它来赚钱?

我从效率提升的角度&#xff0c;分享了我这段时间看到的、用到的&#xff0c;以及思考的一些内容。 最近这段时间&#xff0c;我算是密集的学习。不得不说&#xff0c;优质的资料在推特和油管上特别多&#xff0c;看科技大佬的分享真是一种享受。 很多大神也会录制各种详细的…

项目进度把控难题,项目管理系统轻松帮你解决!

项目管理是企业中非常重要的一项工作&#xff0c;无论是新的项目还是旧的项目&#xff0c;都需要对其进行有效的管理&#xff0c;以确保项目顺利完成并达到预期目标。项目管理涉及到很多方面&#xff0c;比如项目交接、实施计划管理、项目功能管理、项目设备管理等等&#xff0…

tcp三次握手与四次分手

一、tcp三次握手 1、TCP建立连接的流程 1&#xff09;client首先给server发送一个SYN报文&#xff0c;表示想要与server建立TCP连接&#xff0c;此时seq序列号为0 2&#xff09;server收到了报文后&#xff0c;向client发送一个SYN和ACK确认报文&#xff0c;将ACK和SYN放到同一…

SpringSecurity之CSRF

前言 前一篇讲解了关于用户注销以及自动登录&#xff08;记住我&#xff09;等功能。今天我们来看一下关于CSRF的使用及避免。 什么是CSRF 跨站请求伪造&#xff08;英语&#xff1a;Cross-site request forgery&#xff09;&#xff0c;也被称为 one-click attack 或者 ses…

74-网络一(基础知识)

网络一一.基础知识1.什么是网络2.互联网3.IP地址(1)什么是IP地址及其作用(2)IP地址的组成(3)IP地址的分类(4)IP地址的查询4.MAC地址5.端口号(1)端口号及其作用(2)怎么实现A主机上的一个进程和B进程上的一个进程实现通讯?网络二见:网络二 一.基础知识 1.什么是网络 网络是由…

亚马逊云科技开启您的云财务管理之旅——成本优化

众所周知&#xff0c;当你想要从头开始建立一个云财务管理计划似乎是稍有难度的。因此&#xff0c;亚马逊云科技解构了4个云财务管理CFM原则——查看、节省、计划和运营——并分享可以实施的操作指南&#xff0c;帮助您在云上取得成功。 云成本管理工具 亚马逊云科技提供一系列…

VVC之编码结构

VVC之编码结构&#xff08;新一代通用视频编码的读书笔记&#xff09;缩写概述EncAppmain函数解读缩写 缩写含义CVSCoded Video Sequence, 编码视频序列IRAPIntra Random Access Point, 帧内随机接入点GDRGradual Decoding Refresh, 逐渐解码刷新AUAccess Unit, 访问单元PUPic…

5.3 定积分的换元积分法和分部积分法

学习目标&#xff1a; 学习定积分的换元积分法和分部积分法&#xff0c;我会采取以下步骤&#xff1a; 熟悉基本概念和公式&#xff1a;首先&#xff0c;要对定积分、换元积分法和分部积分法有基本的理解&#xff0c;并掌握它们的基本公式和性质。 学习经典例题&#xff1a;找…

OSPF(开放式最短路径优先协议)简介

一.OSPF协议原理简介 二.OSPF协议特点 三.OSPF区域 1.OSPF区域划分作用 2.OSPF 区域划分方式&#xff1a;基于接口(链路)划分区域 3.OSPF 区域标识&#xff1a; 最终归结为32个二进制 4.区域分类&#xff1a; 便于区域设计 5.OSPF 路由器角色&#xff1a; 四.OSPF简单配…

Spring项目创建与 Spring Bean 的存储与读取

目录 一、创建Spring项目 1.1 创建Maven项目 1.2 添加 Spring 框架依赖 1.3 添加启动类 二、Bean对象的创建与存储 2.1 创建Bean 2.2 将Bean注册到容器 2.3 获取并使用Bean对象 2.3.1 创建Spring上下文 2.3.2 从Spring容器中获取Bean对象​编辑 延申&#xff08;多种…

开放式耳机新巅峰!南卡OE Pro兼备澎湃音质、舒适佩戴、创新设计

众所周知&#xff0c;当初苹果带来TWS耳机新时代以后&#xff0c;后面有许多的蓝牙耳机相继跟随和模仿&#xff0c;但NANK南卡却独辟蹊径&#xff0c;将在近日重磅推出首款0压无感全开放无线耳机——南卡OE Pro&#xff0c;走向开放式TWS耳机的新时代。 31度黄金倾斜受力面&…

BGP策略实验

实验要求&#xff1a; 1、使用PreVa1策略&#xff0c;确保R4通过R2到达192.168.10.0/24 2、使用AS_Path策略&#xff0c;确保R4通过R3到达192.168.11.0/24 3、配置MED策略&#xff0c;确保R4通过R3到达192.168.12.0/24 4、使用Local Preference策略&#xff0c;确保R1通过R2到…

有人靠ChatGPT 狂赚200W !有人到现在,连账号都没开通......

作者| Mr.K 编辑| Emma来源| 技术领导力(ID&#xff1a;jishulingdaoli)互联网风水轮流转&#xff0c;当初元宇宙盛极一时之际&#xff0c;在一些知识付费平台上&#xff0c;任何一个关于元宇宙的课程或培训&#xff0c;都很热销&#xff0c;有一定号召力的博主&#xff0c;登…

【JS】1651- 10 个 JS 中 try...catch 使用技巧

作为一位 Web 前端工程师&#xff0c;JavaScript 中的 try...catch 是我们常用的特性之一。本文我将分享 10 个有用的 try...catch 使用技巧&#xff0c;让你在处理异常时更加得心应手。1. 捕获所有异常如果你想捕获代码中所有可能的异常&#xff0c;可以使用一个不带参数的 ca…

对标ChatGPT的开源中文方案

目录 前言 一、Meta发布大语言模型LLaMA 二、斯坦福基于 Meta 的 LLaMA 7B 模型微调出Alpaca 三、基于TencentPretrain训练中文LLaMA大规模语言模型 四、基于斯坦福Alpaca训练中文对话大模型BELLE 五、 清华开源项目ChatGLM中文对话模型 六、基于LLaMA的开源中文语言模型…

SpringBoot整合xxl-job详细教程

SrpingBoot整合xxl-job&#xff0c;实现任务调度说明调度中心执行器调试整合SpringBoot说明 Xxl-Job是一个轻量级分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。Xxl-Job有…

三菱PLC GX Work2学习笔记

Programmable Logic Controller 1 指令集 1.1 触点指令 指令名称指令示例图示常开触点LDLD X01常闭触点LDILDI X12输出线圈OUTOUT Y03或常开触点OROR X33或常闭触点ORIORI X33置位SETSET Y03复位RSTRST Y03区域复位ZRSTZRST Y0 Y53上升沿LDPLDP X03下降沿LDFLDF X13结果上升…

vue项目使用electron打包成桌面应用

学习关键语句 使用electron打包vue项目 electron制作桌面应用 写在前面 很想使用 electron 制作一个桌面应用&#xff0c;但是真的上手使用的时候才发现 electron 的坑实在是太多了 先将遇到的坑记录在这里&#xff0c;遇到一个记录一个 使用 9 以上版本的 vue-i18n 的项目打…

有哪些适合学生党或打工人的AI工具?

以下是一些适合学生党或打工人使用的AI工具&#xff1a; 1. Grammarly&#xff1a;用于检查语法和拼写错误的AI写作助手。 2. Duolingo&#xff1a;一款免费的AI语言学习应用程序&#xff0c;适合学习不同语言。 3. Quizlet&#xff1a;一种在线学习工具&#xff0c;用于创建、…

FE_CSS 复合选择器 元素显示模式 CSS背景

1 CSS 的复合选择器 1.1 后代选择器 后代选择器又称为包含选择器&#xff0c;可以选择父元素里面子元素。其写法就是把外层标签写在前面&#xff0c;内层标签写在后面&#xff0c;中间用空格分隔。当标签发生嵌套时&#xff0c;内层标签就成为外层标签的后代。 元素1 元素2 {…