zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    第一次用python 写的简单爬虫 记录在自己的博客
    【转】使用notepad运行python
    Android Tools&Cmd
    箴言
    无问西东
    Unity存储路径
    手机屏幕亮度设定
    Go Lang
    iOS .tbd
    Prime31
  • 原文地址:https://www.cnblogs.com/mo-jian-ming/p/14415490.html
Copyright © 2011-2022 走看看