时间限制:1秒空间限制:32768K热度指数:9504
**算法知识视频讲解
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
题解:利用后序遍历的特征,前半部分为小于根节点,后半部分为大于根节点
代码如下:
class Solution {
public:
int index=0;
bool VerifySquenceOfBST(vector<int> sequence) {
if(index==0&&sequence.size()==0)return false;
if(sequence.size()==0)return true;
// if(sequence.size()==1)return true;
vector<int>left,right;
int i=0;
int val=sequence[sequence.size()-1];
while(sequence[i]<val){
++i;
left.push_back(sequence[i]);
}
while(sequence[i]>val){
++i;
right.push_back(sequence[i]);
}
++index;
if(i==sequence.size()-1&& VerifySquenceOfBST(left)&&VerifySquenceOfBST(right)){
return true;
}
return false;
}
};