【剑指offer】_09二叉搜索树的后序遍历序列

题目描述

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

解题思路

比如下面的这棵二叉搜索树
在这里插入图片描述
它的后序遍历为0214369875;
我们设当前根节点为root;
第一次root=5
我们可以看出以3和6中间为分割线,左边为5的左子树,右边为5的右子树,数组最后一个数为5,为根结点。所以 {0,2,1,4,3}<root;{6,9,8,7}>root
size–1;
root = 7;
去掉5,最后一个数为7,它是以5为根结点的右子树,那么它肯定大于以5为根节点的左子树并且大于本身的左子树
{0,2,1,4,3}<root;{6}<root;{9,8}>root;
size–1;
root = 8;
当数据规模再减1时,则走到了根结点的右子树的右子树,那么此时的root,它肯定大于以5为根节点的左子树,和以7为根节点的左子树,和自身的左子树,小于自身的右子树
那么size–1一直持续下去,数组最后一个根节点永远都是上述的结论,就算到以5为根结点的左子树中也成立,所以再这个持续的过程中,一旦出现与上述结论相悖的情况,就说明此数不是二叉搜索树
如果最后size为0了,则说明此树为二叉所搜树。

class Solution {
public:bool VerifySquenceOfBST(vector<int> sequence) {int size = sequence.size(); //求出数组长度if(0==size)                //为0返回return false;int i = 0;//去掉总根结点后,数组最后一个元素就是右子树的根结点,它的左子树都比它小,右子树都比它大//那么size再--,就到了右子树的右子树或者到左子树,上述条件仍然成立while(--size){while(sequence[i++]<sequence[size]); //看左子树的值是不是都小于根结点while(sequence[i++]>sequence[size]); //右子树的值是不是都大于根结点if(i<size) //如果最后i还没有和size相同,返回错误return false;i = 0;}return true;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383102.shtml

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

相关文章

【剑指offer】_12 数组中的逆序对

题目描述 在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 解题思路 剑指offer的解法 看到这个题目&#xff0…

详解Linux下通过yum安装Mariadb/MySQL数据库(腾讯云也适用)

1. 安装Mariadb 安装命令 yum -y install mariadb mariadb-server安装完成MariaDB&#xff0c;首先启动MariaDB systemctl start mariadb设置开机启动 systemctl enable mariadbMariaDB的相关简单配置 此命令进入到配置相关界面 mysql_secure_installation首先是设置密码…

海量数据处理(位图和布隆过滤器)

哈希切割 给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址&#xff1f; 与上题条件相同&#xff0c;如何找到top K的IP&#xff1f;如何直接用Linux系统命令实现 解决思路 找到出现次数最多的IP地址 要找到前TopK的IP地址&#xff0c;就…

C++中的lambda表达式和线程库

98中的一个例子 如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法 #include <algorithm> #include <functional> int main() {int array[] {4,1,8,5,3,7,0,9,2,6};// 默认按照小于比较&#xff0c;排出来结果是升序std::sort(array, a…

文件压缩(Huaffman树的概念及其实现)

什么是压缩 想办法让源文件变得更小并能还原。 为什么要进行文件压缩 文件太大&#xff0c;节省空间提高数据再网络上传输的效率对数据有保护作用—加密 文件压缩的分类 无损压缩 源文件被压缩后&#xff0c;通过解压缩能够还原成和源文件完全相同的格式 有损压缩 解压缩之…

详解STL中的空间配置器(SGI版本)

空间配置器 1.什么是空间配置器 为各个容器高效的管理空间(空间的申请与回收)的 2.为什么需要空间配置器 各种容器----->可以存放元素---->底层需要空间 new 申请空间 operator new ---->malloc调用构造函数------完成对象的构造 动态内存管理总结 前面的容器…

大四阶段的社会实践的主要目的是_疫情当前,大三大四的学生“很惨”?大一大二的学生也别松懈...

大四毕业生不容易这次疫情对于高校学生而言&#xff0c;可以说是各有各的难处&#xff0c;“这届毕业生很惨”更是屡上热搜。不可否认&#xff0c;大四毕业生确实很不容易&#xff0c;论文答辩、毕业、求职就业等都受到了影响&#xff0c;虽然有困难&#xff0c;但各方都在积极…

【剑指offer】_19 滑动窗口中的最大值

题目描述 给定一个数组和滑动窗口的大小&#xff0c;找出所有滑动窗口里数值的最大值。例如&#xff0c;如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3&#xff0c;那么一共存在6个滑动窗口&#xff0c;他们的最大值分别为{4,4,6,6,6,5}&#xff1b; 针对数组{2,3,4,2,6,2,…

android 文字反转_多文字共享信息系统

欧阳贵林 www.HeZi.net首发表于2016年03月23日“ 处在信息时代的开端&#xff0c;信息技术不应有特殊的文字性&#xff0c;需要创建多文字共享信息系统&#xff0c;给各国文字一个公平的参与信息与科技创新发展的平台。这是世界的事&#xff0c;更是中国事。”01人类语言语言文…

LeetCode【1--两数之和】 LeetCode【2--两数相加】

两数之和 题目描述 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;你不能重复利用这个数组中同样的元素。 解题思路 直接两…

input数字开头不能为0_李商隐为初恋写诗,每句以数字开头,最后10字一直被仿从未被超越...

上学时&#xff0c;每次写作文&#xff0c;老师总爱在耳边念叨&#xff1a;“你的作文得让阅卷老师看得懂&#xff0c;不然不可能给你高分的&#xff01;”每次听到话&#xff0c;笔者总是用李商隐的诗来和他斗嘴。是的&#xff0c;李商隐的诗作常常是让人读不懂的&#xff0c;…

lsass.exe 当试图更新密码时_“驱动人生”下载器木马再度更新-你应该注意什么?...

360安全大脑监测到通过"驱动人生"供应链攻击传播的挖矿木马在1月30日下午4时左右再次更新。此次更新中&#xff0c;木马在此前抓取系统帐户密码的基础上增加了抓取密码hash值的功能&#xff0c;并试图通过pass the hash攻击进行横向渗透&#xff0c;使得该木马的传播…

LeetCode【3--无重复的最长字串】 LeetCode【4--有序数组中的中位数】

无重复的最长字串 题目描述 给定一个字符串&#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 解题思路 看到这道题&#xff0c;其实就两个步骤&#xff0c;遍历字符串&#xff0c;记录当前字符有没有重复。 重复一般解决就是哈希&#xff0c;这里用个数组表示…

hwt字体转换ttf_五分钟教你弄懂了字体反爬是个啥

今天的文章内容主要是关于字体反爬。目前已知的几个字体反爬的网站是猫眼&#xff0c;汽车之家&#xff0c;天眼查&#xff0c;起点中文网等等。以前也看过这方面的文章&#xff0c;今天跟个老哥在交流的时候&#xff0c;终于实操了一把&#xff0c;弄懂了字体反爬是个啥玩意。…

LeetCode【5--最长的回文子串】 LeetCode【6--Z字形变换】

最长的回文子串 题目描述 给定一个字符串 s&#xff0c;找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 解题思路 可以跟无重复的最长子串一样&#xff0c;用一个滑动窗口&#xff0c;只不过这个窗口的右边界往右&#xff0c;左边界每回要从右边界的下标往左…

androidstudio 日历视图怎么显示农历_中秋国庆旅游攻略怎么做?用这个便签软件很简单...

九月已经到来&#xff0c;中秋节和国庆节距离我们也不远了&#xff0c;今年的中秋和国庆节重叠了有足足八天的假期。不少人都想趁着这个小长假出门旅游&#xff0c;要想保证旅游质量&#xff0c;那么就要做好攻略。中秋国庆旅游攻略怎么做&#xff1f;要想做好一份中秋国庆旅游…

c++ select函数_PySpark 操作函数一览

PySpark 操作函数一览Created: Sep 14, 2020 10:28 AM Tags: Big Data, PySpark, Python, SparkPyspark.sql.functionsfrom pyspark.sql import functions as F函数使用说明基本数学函数类abssin、cos、tan、asin、acos 、atan、sinh、cosh、tanhceil、round、floorexp、log、l…

LeetCode【7--整数反转】 LeetCode【8--字符串转整数】

整数反转 题目描述 给出一个 32 位的有符号整数&#xff0c;你需要将这个整数中每位上的数字进行反转。 解题思路 x%10 取一位&#xff0c;x/10下一位&#xff0c;注意越界&#xff0c; 代码实现 class Solution { public:int reverse(int x) {int sum 0;while(x){if(s…

word2003如何设置护眼模式_ERP系统上线,如何设置采购收货的模式,提升企业的采购效率...

如何合理的规划采购计划上次去拜访一个朋友&#xff0c;他们说公司既然出现没有下达采购订单&#xff0c;供应商也有送货过来的事情&#xff0c;对于公司来说&#xff0c;这个是非常严重的问题。若用了ERP系统之后&#xff0c;如何避免类似的事情发生&#xff0c;今天我们来分享…

LeetCode【9-- 回文数】LeetCode【10 --正则表达式的匹配】

回文数 题目描述 判断一个整数是否是回文数。回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 解题思路 判断该数的逆序数是不是和原数相同 代码实现 class Solution { public:bool isPalindrome(int x) {if(…