1. 题目
给定一个整数数组,你需要验证它是否是一个二叉搜索树正确的先序遍历序列。
2. 解题
1、要满足搜索树并且又是先序遍历
2、进来一个元素用stack记录,进栈
3、每次元素进栈前,先和栈顶比较,if大于栈顶,则是要安插在右子树
临时变量记录当前栈顶然后出栈,再和新栈顶比较,直到栈顶为空或者小于新栈顶
4、遍历数组时如果小于临时变量,则不满足搜索树性质
3. 代码
bool pre(vector<int>& a) { if (a.size() < 3) return true; int temp = INT_MIN; stack<int> s; for (int i = 0;i < a.size();i++) { if (a[i] < temp)return false; while (!s.empty() && s.top() < a[i]) { temp = s.top(); s.pop(); } s.push(a[i]); } return true; }