NC271.二叉搜索树的后序遍历序列
文章目录
- 一、题目描述
- 二、示例
- 三、主要思路
一、题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。
提示:
1.二叉搜索树是指父亲节点大于左子树中的全部节点,但是小于右子树中的全部节点的树。
2.该题我们约定空树不是二叉搜索树
3.后序遍历是指按照 “左子树-右子树-根节点” 的顺序遍历
二、示例
示例一:
输入:[1,3,2]
返回值:true
示例二:
输入:[3,1,2]
返回值:false
示例三:
输入:[5,7,6,9,11,10,8]
返回值:true
三、主要思路
这道题可以用分治的思想来解决,首先我们要找到这棵二叉搜索树的根节点,由于给出的序列是后序遍历序列,所以序列的最后一个元素一定就是根节点。
二叉搜索树的特性是左子树所有节点的值一定比根节点的值小,右子树所有节点的值一定比根节点的值大,题目说明了序列中不存在两个重复的数字。
所以我们要做的是两步:确定序列中的左子树区间和右子树区间、检测区间内的值是否符合规定。
首先是确定序列中左子树的区间,我们从左到右遍历序列,如果当前的值比根节点的值小,则继续遍历,直到出现第一个比根节点大的值时,我们就能够确定下左子树的区间范围了。
然后从第一个比根节点大的值开始,按理说往后一定是右子树区间,也就是说往后的值一定都比根节点的值大,否则,就说明这不是符合规定的序列。因此,我们需要检测右子树区间是否符合规定,当发现存在一个比根节点小的值时,就可以直接返回false了。
如果右子树区间也没有问题,那就继续将左右子树区间当成一个新的序列划分,将问题规模变小,当划分成不可分割的子问题时,如果所有区间都符合规定,则证明该序列是正确的二叉搜索树后序遍历序列。
class Solution {
public:bool _VerifySquenceOfBST(vector<int> a, int start, int end){if(start >= end){return true;}// 后序遍历,数组的最后一个元素一定是根节点int root = a[end];// 确定根节点的左子树区间范围int i = start;while(i < end && a[i] < root){i++;}// 检测i往后的值是否都是大于rootfor(int j = i; j < end; j++){if(a[j] < root){return false;}}// 走到这里,说明区间检测正确,继续分治检测return _VerifySquenceOfBST(a, start, i - 1) && _VerifySquenceOfBST(a, i, end - 1);}bool VerifySquenceOfBST(vector<int> sequence) {if(sequence.empty()){return false;}return _VerifySquenceOfBST(sequence, 0, sequence.size() - 1);}
};
相关文章:
NC271.二叉搜索树的后序遍历序列
文章目录一、题目描述二、示例三、主要思路一、题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。 提示: 1.二叉搜索树是指父亲节点大于左子树中…...
研究fastdds v2.8.0 1之 基础模块
阅读 dds 协议 1.4 版本 , 结合fastdds 2.8 的代码理解dds。 Entity 理解 DCPS基础设施模块由以下类组成: Entity DomainEntity QosPolicy Listener Status WaitSet Condition GuardCondition StatusCondition1、Entity 是所有DCPS 对象的基础类 virt…...
ElasticSearch系列 - SpringBoot整合ES:精确值查询 term
文章目录01. ElasticSearch term 查询?02. ElasticSearch term 查询数值型数据?03. ElasticSearch term 查询字符串类型数据?04. ElasticSearch term 查询日期型数据?05. ElasticSearch term 查询日期型数据的注意事项?…...
关于async/await、promise和setTimeout执行顺序
关于async/await、promise和setTimeout执行顺序 async function async1() {console.log(async1 start);await async2();console.log(asnyc1 end); } async function async2() {console.log(async2); } console.log(script start); setTimeout(() > {console.log(setTimeOut…...
2023-03-31:如何计算字符串中不同的非空回文子序列个数?
2023-03-31:给定一个字符串 s,返回 s 中不同的非空 回文子序列 个数, 通过从 s 中删除 0 个或多个字符来获得子序列。 如果一个字符序列与它反转后的字符序列一致,那么它是 回文字符序列。 如果有某个 i , 满足 ai ! bi ÿ…...
D. The Number of Imposters(二分图染色)
Problem - D - Codeforces Theofanis开始玩名为“Among them”的新网络游戏。然而,他总是和塞浦路斯球员一起踢球,他们都有一个相同的名字:“安德烈亚斯”(塞浦路斯最常见的名字)。在每个游戏中,Theofanis和n个其他玩家一起玩。因为它们都有相…...
图片太大怎么改小kb?简单的图片压缩方法分享
平时当我们在朋友圈分享一些有趣的照片或者使用图片素材进行上传的时候,经常遇到图片大小kb超出平台限制的情况,这时就无法正常上传了,遇到这种情况我们就需要想办法降低图片大小kb,那么有什么办法能够压缩图片大小呢?…...
【python-leecode刷题】动态规划类问题----以53. 最大子数组和为例
作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。…...
Idea常用快捷键设置
设置来源于尚硅谷宋红康老师 第1组:通用型 说明 快捷键 复制代码-copy ctrl c 粘贴-paste ctrl v 剪切-cut ctrl x 撤销-undo ctrl z 反撤销-redo ctrl shift z 保存-save all ctrl s 全选-select all ctrl a 第2组:提高编写速度(上…...
【新2023Q2模拟题JAVA】华为OD机试 - 分苹果
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:分苹果 题目 AB两个人把苹果…...
【博学谷学习记录】超强总结,用心分享丨人工智能 自然语言处理 BERT、GPT、ELMO对比学习简记
目录三模型架构BERTGPTELMO三者差异点三模型架构 BERT 优点 在11个NLP任务上取得SOAT成绩.利用了Transformer的并行化能力以及长语句捕捉语义依赖和结构依赖.BERT实现了双向Transformer并为后续的微调任务留出足够的空间. 缺点 BERT模型太大, 太慢.BERT模型中的中文模型是以…...
【嵌入式Bluetooth应用开发笔记】第四篇:初探蓝牙HOST及应用开发(持续更新ing)
概念 蓝牙HOST(Bluetooth Host)是指能够连接到其他蓝牙设备并控制它们的设备。在蓝牙技术中,通常有两种类型的设备:蓝牙HOST和蓝牙SLAVE。蓝牙HOST通常是指拥有控制权的设备,它可以主动连接其他蓝牙设备并向其发送命令。相反,蓝牙SLAVE则是指被动连接的设备,它接受来自…...
GORM 基础 -- CRUD 接口
1、Create 1.1 创建纪录 user : User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}result : db.Create(&user) // pass pointer of data to Createuser.ID // 回填插入数据的主键 result.Error // 返回的 error 信息 result.RowsAffect…...
为什么0代码自动化测试越来越受欢迎?一文2000字解析
目录 01、什么是零代码自动化测试 02、为什么零代码自动化测试越来越受欢迎 03、有代码和零代码自动化有什么区别 04、零代码自动化测试可以帮助你做什么 05、零代码自动化测试方法:NLP(自然语言处理) 06、为什么我们需要零代码自动化测…...
cleanmymac最新2023版 mac清理软件CleanMyMac X4.12.5 中文版功能介绍
CleanMyMac X4.12.5 中文版只需两个简单步骤就可以把系统里那些乱七八糟的无用文件统统清理掉,节省宝贵的磁盘空间。cleanmymac x个人认为X代表界面上的最大升级,功能方面有更多增加,与最新macOS系统更加兼容,流畅地与系统性能更加…...
pyhon部署注意事项
前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…...
宣城x移动云,打造“城市级物联感知平台”
随着新一代信息技术与城市现代化的深度融合,智慧城市建设的重要性也愈发凸显。而在智慧城市建设中,物联网感知体系扮演着中枢神经系统的角色。 安徽宣城紧抓长三角城市群一体化发展机遇,为构建“数字宣城”建设发展新模式,携手移…...
英伟达Jetson NX套件刷机,配置Ubuntu20。
0. 前言 人并没有眼见得那么光鲜亮丽,博客也是。 今天推荐一本书《一百个人的十年》,没错就是我们的那十年(60年代)。写得很真实,牛棚猪圈,确实如此。 1. SdkManager安装 官网下载。 打开终端 执行命令sud…...
Vue计算属性
计算属性 计算属性的重点突出在属性两个字上(属性是名词),首先它是个属性其次这个属性有计算的能力(计算是动词),这里的计算就是个函数;简单点说,它就是一个能够将计算结果缓存起来的属性(将行为转化成了静态的属性),仅此而已…...
代码随想录刷题-字符串-反转字符串
文章目录反转字符串习题双指针swap 的两种方式反转字符串 本节对应代码随想录中:代码随想录,讲解视频:字符串基础操作! | LeetCode:344.反转字符串_哔哩哔哩_bilibili 习题 题目链接:344. 反转字符串 - …...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
rm视觉学习1-自瞄部分
首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...
统计学(第8版)——统计抽样学习笔记(考试用)
一、统计抽样的核心内容与问题 研究内容 从总体中科学抽取样本的方法利用样本数据推断总体特征(均值、比率、总量)控制抽样误差与非抽样误差 解决的核心问题 在成本约束下,用少量样本准确推断总体特征量化估计结果的可靠性(置…...
