只能膜拜大佬,自己写的好复杂,但是结构比较清晰。
不说了,注解 如下,我去学习其他大佬的代码了。

//后续遍历的最后一个节点是根节点,可以把搜索树分成两部分
//找到第一个比根节点小的集和,因此划成左右子树,左集合里不能有比根节点大的。如果有return false

**算法流程**:
//判断vector是否为空,不为空,继续判断,若为空 return false
//拿出右边第一个元素(根节点)c
//从右往左找到第一个比根节点小的节点下标index
//划分集和,把(0,index)划分为一组,判断这组里是否有比根节点c大的,如果有return false
//(因为不符合搜索树的条件,搜索树话分成两组,一组比 根节点大,一组比根节点小,根节点小的组里不可能有比根节点大的)
//如果没有,继续划分,直到找不到比c小的,return true;
class Solution {
public:
    bool VerifySquenceOfBST(vector<int> sequence) { 
        if(sequence.size()==0)
            return false;
        int c=sequence[sequence.size()-1]; //根节点
        int index; //找到第一个比c根节点小的节点
        for(index=sequence.size()-2;index>=0;index--){
            if(sequence[index]<c)
                break;
        }
        if(index<0) //没有找到比c小的节点,return true;
            return true;
        vector<int> temp;
        for(int i=0;i<=index;i++){
            if(sequence[i]>c)
                return false;
            temp.push_back(sequence[i]);
        }
        return VerifySquenceOfBST(temp);
    }
};