• PAT L2-004. 这是二叉搜索树吗?


    题目链接:PAT L2-004. 这是二叉搜索树吗?

    题意:

    给你一串数,问你是否是一个二叉搜索树或者是镜像的先序遍历。

    如果是,就输出这棵树的后序遍历。

    题解:

    根据二叉搜索树的性质,模拟判断一下。

     1 #include<bits/stdc++.h>
     2 #define F(i,a,b) for(int i=a;i<=b;++i)
     3 using namespace std;
     4 
     5 const int N=1e4+7;
     6 
     7 int n,ismirror;
     8 vector<int>pre,ans;
     9 
    10 void dfs(int l,int r)
    11 {
    12     if(r<l)return;
    13     int b=l,c=r+1;
    14     if(ismirror)
    15     {
    16         while(b<r&&pre[b+1]>=pre[l])b++;
    17         while(c>l+1&&pre[c-1]<pre[l])c--;
    18     }else
    19     {
    20         while(b<r&&pre[b+1]<pre[l])b++;
    21         while(c>l+1&&pre[c-1]>=pre[l])c--;
    22     }
    23     if(c-b!=1)return;
    24     dfs(l+1,b),dfs(c,r);
    25     ans.push_back(pre[l]);
    26 }
    27 
    28 int main()
    29 {
    30     scanf("%d",&n);
    31     F(i,1,n)
    32     {
    33         int x;
    34         scanf("%d",&x);
    35         pre.push_back(x);
    36     }
    37     dfs(0,n-1);
    38     if(ans.size()!=n)ismirror=1,ans.clear(),dfs(0,n-1);
    39     if(ans.size()==n)
    40     {
    41         puts("YES");
    42         for(int i=0;i<n;i++)printf("%d%c",ans[i]," 
    "[i==n-1]);
    43     }else puts("NO");
    44     return 0;
    45 }
    View Code
  • 相关阅读:
    Mac下安装brew
    Mac下安装node.js
    Mac下mysql服务端密码重置及环境配置
    Mac配置jdk以及maven
    Mac下卸载jdk
    34个漂亮的应用程序后台管理界面(系列一)
    ViewState
    get和post
    无刷新 分页评论
    isPostBack原理
  • 原文地址:https://www.cnblogs.com/bin-gege/p/6708448.html
Copyright © 2020-2023  润新知