题目描述

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思路:这题目有点特殊,主要在于序列为空的时候,不是后序遍历,返回的是false,但是在递归的时候,递归基要写true,因为如果写false,那么递归的所有结果都是false。
step1:首先找到最后一个就是根节点;
step2:然后比较左子树,是否都比root的值小,得到左子树的位置i - 1,并且存储左子树的所有值;
step3:从位置i开始,比较右子树的值是否都大于root,如果小于则返回false,并且存储右子树的所有值;
step4:递归的比较左右子树。
 
 class Solution {
public:
bool VerifySquenceOfBST1(vector<int> sequence) {
if(sequence.size() == ){
return true;
}
int i = ,j = ;
int root = sequence[sequence.size() -];
vector<int> leftSeq,rightSeq; for(i;i < sequence.size() - ;++i){
if(sequence[i] > root){
break;
}
leftSeq.push_back(sequence[i]);
} for(j = i;j < sequence.size() - ;++j){
if(sequence[j] < root){
return false;
}
rightSeq.push_back(sequence[j]);
}
bool left = true;
left = VerifySquenceOfBST1(leftSeq);
bool right = true;
right = VerifySquenceOfBST1(rightSeq);
return left && right;
}
bool VerifySquenceOfBST(vector<int> sequence){
if(sequence.size() == ){
return false;
}
return VerifySquenceOfBST1(sequence); }
};

一定要注意32行和第2行的不同。

剑指offer 二叉树的后序遍历序列的更多相关文章

  1. 剑指offer--二叉树的后序遍历

    思路:对于一个二叉树的后序遍历序列来说,最后一个数一定是根节点,然后前面的数中,从最开始到第一个大于根节点的数都是左子树中的数,而后面到倒数第二个数应该都是大于根节点的,是右子树,如果后面的数中有小于 ...

  2. 剑指 Offer 33. 二叉搜索树的后序遍历序列 + 根据二叉树的后序遍历序列判断对应的二叉树是否存在

    剑指 Offer 33. 二叉搜索树的后序遍历序列 Offer_33 题目详情 题解分析 本题需要注意的是,这是基于一颗二叉排序树的题目,根据排序二叉树的定义,中序遍历序列就是数据从小到大的排序序列. ...

  3. 剑指offer24:判断一个二叉树的后序遍历序列是否为二叉搜索树的后序遍历序列

    public static boolean isBSTSequence(int[] s,int l, int r) { if (s == null || r <= 0) return false ...

  4. [剑指Offer]33-根据后序序列判断是否能组成BST

    题目 如题. 题解 从序列第一个大于根节点的值往后都是右子树,判断右子树是否都大于根节点. 然后递归判断左右子树是否是BST 代码 class TreeNode { int val = 0; Tree ...

  5. 剑指offer 二叉搜索树后续遍历序列 判断

    最后一个元素是 根节点. 左子树的元素都小于根节点,右子树都大于根节点 然后递归判断 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  6. 剑指offer面试题24:二叉搜索树的后序遍历序列

    题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是返回true,否则返回false. 假设输入的数组任意两个数字都不相同 解题思路:二叉搜索树的特点是根节点的左子树的值小于等 ...

  7. C++版 - 剑指offer 面试题24:二叉搜索树BST的后序遍历序列(的判断) 题解

    剑指offer 面试题24:二叉搜索树的后序遍历序列(的判断) 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true.否则返回false.假设输入的数组的任意两个 ...

  8. 【剑指Offer面试编程题】题目1367:二叉搜索树的后序遍历序列--九度OJ

    题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 输入: 每个测试案例包括2行: 第一行为1个整数 ...

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

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/26092725 剑指offer上的第24题,主要考察递归思想,九度OJ上AC. 题目描写叙述 ...

随机推荐

  1. windows远程linux的方法(不用xshell)

    先cmd进入DOS,再输入命令ssh root@要远程的linux的ip 输入密码 即可进入linux后台.如下图,即为edr后台,可以见到unabackup服务了. 如果是多次远程不同IP,第二次远 ...

  2. python上传文件接口

    1.由于公司做接口测试,遇到了上传文件,一直搞了好久,原来是加了头部的原因def test_79(self): '''导入配置文件''' request = e['mysqlshujuku'] url ...

  3. 牛客-Y 老师的井字窗

    链接:https://ac.nowcoder.com/acm/contest/3667/B来源:牛客网 Y 老师因为贫穷破费(应该是去买乐高玩具了),现在只能将他镀金的门窗变卖换钱了,但这样就不能抵御 ...

  4. 树莓派4B踩坑指南 - (12)谷歌浏览器书签同步

    书签和插件不能同步真的是不方便..使用时删掉※符号 过程比较复杂,坑很多,但确认有效 免费访问说明: https://github.com/max2max/fre※es※s 软件安装 https:// ...

  5. java中关于&0xFF 的问题

    最近遇到一个问题,半天也没想明白,byte temp = 0xA0,为什么System.out.println(temp),打印的值为:-96:而System.out.println(temp& ...

  6. C++中的内联函数

    (1)定义.函数声明和定义时,在返回值类型前加inline关键字. (2)作用.避免调用时的额外开销. (3)使用情况.函数体很小,且频繁调用. (4)本质.通过牺牲代码段空间,来提高程序运行的时间效 ...

  7. linux环境安装包方式

    概述 安装有很多种,有时我们会混淆视听不知在什么场景或什么情况下用什么命令,下面讲解下几种安装命令的使用.希望对大家有帮助~ 详解 pip install kuming或 python -m pip ...

  8. uniGUI之UniSyntaxEdit(24)

    UniSyntaxEdit1语法高亮显示控件,主要属性Language,它是  多行 1]Language 语言 2]执行 FDquery1.Open(UniSyntaxEdit1.Lines.Tex ...

  9. java集合体系结构总结

    好,首先我们根据这张集合体系图来慢慢分析.大到顶层接口,小到具体实现类. 首先,我想说为什么要用集合?简单的说:数组长度固定,且是同种数据类型.不能满足需求.所以我们引入集合(容器)来存储任意数据类型 ...

  10. iOS项目开发日常之创建文件(协议、类、分类、扩展)

    iOS项目开发过程中,是以不断创建文件的形式进行着的. 创建得比较频繁的文件类型是: 这两个类型中创建的文件有:子类.分类.扩展.协议四种文件,如下:    这四类文件是频繁创建的,我们来看一下各自分 ...