• BST | 1043 BST树与镜像BST树的判断


    较为简单。小于大于的都走一遍就可以AC了

    #include <stdio.h>
    #include <memory.h>
    #include <math.h>
    #include <string>
    #include <vector>
    #include <set>
    #include <stack>
    #include <queue>
    #include <algorithm>
    #include <map>
    
    
    #define I scanf
    #define OL puts
    #define O printf
    #define F(a,b,c) for(a=b;a<c;a++)
    #define FF(a,b) for(a=0;a<b;a++)
    #define FG(a,b) for(a=b-1;a>=0;a--)
    #define LEN 1010
    #define MAX (1<<30)-1
    #define V vector<int>
    
    using namespace std;
    
    int pre[LEN];
    vector<int> post;
    bool isMirror=0;
    int n;
    
    void set_post(int a,int b){
        if(a>b)return;
        if(a!=b){
            int i=a+1;
            if(isMirror)
                while(i<=b && pre[i]>=pre[a]) i++;
            else
                while(i<=b && pre[i]<pre[a]) i++;
            int j=i;
            if(isMirror)
                while(j<=b && pre[j]<pre[a]) j++;
            else
                while(j<=b && pre[j]>=pre[a]) j++;
            set_post(a+1,i-1);
            set_post(i,j-1);
        }
        post.push_back(pre[a]);
    }
    
    int main(){
    //    freopen("1043_3.txt","r",stdin);
        I("%d",&n);
        int i;
        FF(i,n) I("%d",&pre[i]);
        set_post(0,n-1);
        bool isOK=1;
        if(post.size()!=n){
            post.clear();
            isMirror=1;
            set_post(0,n-1);
            if(post.size()!=n)
                isOK=0;
        }
        if(isOK){
            puts("YES");
            FF(i,n){
                O("%d",post[i]);
                if(i!=n-1)
                    O(" ");
            }
        }else
            puts("NO");
        return 0;
    }
  • 相关阅读:
    增加新分类daily——“每天学了啥?”
    gcc选项中的编译过程
    一个带路径复制的perl脚本
    git
    mysql explain 详解
    CentOS Python2.4升级到Python2.7
    mongoDb查询
    linux php 扩展
    php-redis 扩展安装
    redis Linux的安装方法
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8530516.html
Copyright © 2020-2023  润新知