首页 > 技术文章 > 255. 验证前序遍历序列二叉搜索树

mo-jian-ming 2021-02-19 12:03 原文

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

 

推荐阅读