#include<iostream>
using namespace std;
int a[1005],b[1005];
int ct,f;
void dfs1(int p,int q){
if(p>q) return;
if(p!=q){
int i=p+1;
while(i<q+1){
if(a[i]>=a[p]) i++;
else break;
}
int j=i;
while(j<q+1){
if(a[j]<=a[p]) j++;
else break;
}
if(j!=q+1) {f=1; return;}
dfs1(p+1,i-1);
dfs1(i,q);
}
b[ct++]=a[p];
}
void dfs2(int p,int q){
if(p>q) return;
if(p!=q){
int i=p+1;
while(i<q+1){
if(a[i]<=a[p]) i++;
else break;
}
int j=i;
while(j<q+1){
if(a[j]>=a[p]) j++;
else break;
}
if(j!=q+1) {f=1; return;}
dfs2(p+1,i-1);
dfs2(i,q);
}
b[ct++]=a[p];
}
int main(){
int n; cin>>n;
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
dfs1(0,n-1);
if(!f){
printf("YES\n");
for(int i=0;i<n-1;i++)
printf("%d ",b[i]);
printf("%d",b[n-1]);
return 0;
}
ct=0; f=0;
dfs2(0,n-1);
if(!f){
printf("YES\n");
for(int i=0;i<n-1;i++)
printf("%d ",b[i]);
printf("%d",b[n-1]);
return 0;
}
printf("NO");
}
L2-004 这是二叉搜索树吗?
最新推荐文章于 2024-07-12 18:56:03 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)