题目

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


考点

1.BST 二叉搜索树

2.递归


思路

1.后序遍历,根节点是序列的最后一个。

2.BST中左子树的值比根节点小,如果序列第一个数就比根节点大,说明没有左子树,break

3.BST中右子树的值比根节点大,如果右子树有比根节点小的数,说明不是BST,return false

4.递归 left=左子数,right=右子树

5.return left&&right


代码

class Solution {
public:
bool VerifySquenceOfBST(vector<int> sequence) {
//1.入口检查
if(!sequence.size())
return false;
//2.根节点
int root = sequence.back();
auto itLeft=sequence.begin(); //3.是否左子树都比根节点小
for( ;itLeft<(sequence.end()-1);itLeft++)
{
if(*itLeft>root)
break;
}
auto itRight=itLeft;
//4.是否右子树都比根节点大
for(;itRight<(sequence.end()-1);itRight++)
{
if(*itRight<root)
return false;
} bool left=true;
//5.如果存在左子树,递归检查该左子树是否是BST
if(itLeft!=sequence.begin())
{
//检查左子树
vector<int> lefttemp;
for(int i=0;i<(itLeft-sequence.begin());i++)
{
lefttemp.push_back(sequence.front());
}
left=VerifySquenceOfBST(lefttemp);
} bool right=true;
//6.如果存在右子树,递归检查该右子树是否是BST
if(itRight!=itLeft)
{
//将左子树去掉
sequence.erase(sequence.begin(),itLeft);
//去掉根结点
sequence.pop_back();
//检查右子树
left=VerifySquenceOfBST(sequence);
} return left&&right;
}
};

问题

第33题:LeetCode255 Verify Preorder Sequence in Binary Search Tree 验证先序遍历是否符合二叉搜索树的更多相关文章

  1. [LeetCode] Verify Preorder Sequence in Binary Search Tree 验证二叉搜索树的先序序列

    Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary ...

  2. [LeetCode] 255. Verify Preorder Sequence in Binary Search Tree 验证二叉搜索树的先序序列

    Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary ...

  3. [Locked] Verify Preorder Sequence in Binary Search Tree

    Verify Preorder Sequence in Binary Search Tree Given an array of numbers, verify whether it is the c ...

  4. [Swift]LeetCode255.验证二叉搜索树的先序序列 $ Verify Preorder Sequence in Binary Search Tree

    Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary ...

  5. LeetCode Verify Preorder Sequence in Binary Search Tree

    原题链接在这里:https://leetcode.com/problems/verify-preorder-sequence-in-binary-search-tree/ 题目: Given an a ...

  6. Leetcode 255. Verify Preorder Sequence in Binary Search Tree

    验证一个list是不是一个BST的preorder traversal sequence. Given an array of numbers, verify whether it is the co ...

  7. 255. Verify Preorder Sequence in Binary Search Tree

    题目: Given an array of numbers, verify whether it is the correct preorder traversal sequence of a bin ...

  8. [LC] 255. Verify Preorder Sequence in Binary Search Tree

    Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary ...

  9. [LeetCode] 255. Verify Preorder Sequence in Binary Search Tree_Medium tag: Preorder Traversal, tree

    Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary ...

随机推荐

  1. ASP.NET中多语言的实现

    一个网站可能具备多个语言,要实现这个功能在ASP.NET中是非常简单的.我们需要为项目添加资源文件文件夹,并且添加针对网站的特定的资源文件等即可.在ASP.NET中资源文件分成两类:全局和页面级(即“ ...

  2. pat1068. Find More Coins (30)

    1068. Find More Coins (30) 时间限制 150 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Eva l ...

  3. hduoj 2062Subset sequence

    Subset sequence Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  4. 判断表单中是否含有disabled属性

    我想判断input里面是否有disabled.或者选中未选中的selected  checked 属性时,需要用  prop()  方法,返回的结果是 true 或 false . attr()这个方 ...

  5. IIS_常见问题及解决方法

    配置错误 在唯一密钥属性“value”设置为“default.aspx”时,无法添加类型为“add”的重复集合项 配置文件 \\*******\web\web.config web.config中 & ...

  6. spring aop xml中配置实例

    http://blog.csdn.net/wangpeng047/article/details/8560694

  7. EF Core 2.1 +数据库视图

    1.参考文档 https://stackoverflow.com/questions/36012616/working-with-sql-views-in-entity-framework-core ...

  8. (开发)bable - es6转码

    参考:http://www.ruanyifeng.com/blog/2016/01/babel.html Babel Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执 ...

  9. Trouble Shooting的一些感想(实时补充)

    最近一直做两个产品功能的Merge工作,代码Merge过来之后,发现了很多问题.经过Trouble Shooting,最终发现归根结底都是我们Merge的问题,例如有的Code没有Merge过来,Me ...

  10. IPV4基本知识介绍

    转自华为官网 1.1  介绍 定义 IPv4(Internet Protocol Version 4)协议族是TCP/IP协议族中最为核心的协议族.它工作在TCP/IP协议栈的网络层,该层与OSI参考 ...