#include <climits>
class Solution {
public:
    bool VerifySquenceOfBST(vector<int> sequence) {
        //辅助遍历,null
      if(sequence.size()==0) return false;
      stack<int> s;
      //根节点的根节点无限大
      int root = INT_MAX;
        //for循环,以根->右->左的形式进行循环
      for(int i = sequence.size()-1; i >=0; i--)
      {
        //判断是否为搜索二叉树,二叉树的性质是左值<根植<右值
        if(sequence[i]>root)return false;
        //当遇到s.top()>sequence[i]时,就说明所有右子树的节点以遍历完全,此时的sequence[i]就是左子树的起始节点
       while(!s.empty()&&s.top()>sequence[i])
       {
        //把所有右子树的节点都从stack弹出时,依然满足true的状态就说明该列表是所要求的结果,最后一个s.top()是根节点
        root = s.top();
        s.pop();
       }
       s.push(sequence[i]);
      }
      return true;
     
    }
};