255. 验证前序遍历序列二叉搜索树

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;
}

 

posted @ 2021-02-19 12:03  赫拉克利特  阅读(161)  评论(0编辑  收藏  举报