简单题。构造出二叉搜索树,然后check一下。

#include<stdio.h>
#include<algorithm>
using namespace std; const int maxn=+;
struct Node
{
int left;
int right;
int val;
} s[maxn]; int n;
int a[maxn];
int ans[maxn],tot;
int h[maxn];
int k; void dfs(int x)
{
ans[k++]=s[x].val;
if(s[x].left!=-) dfs(s[x].left);
if(s[x].right!=-) dfs(s[x].right);
} void houxu(int x)
{
if(s[x].left!=-) houxu(s[x].left);
if(s[x].right!=-) houxu(s[x].right);
h[k++]=s[x].val;
} bool check()
{
for(int i=;i<n;i++) if(ans[i]!=a[i]) return ;
return ;
} int main()
{
while(~scanf("%d",&n))
{
for(int i=; i<n; i++) scanf("%d",&a[i]);
for(int i=; i<=n; i++) s[i].left=s[i].right=-;
int id=;
s[id++].val=a[];
for(int i=; i<n; i++)
{
int now=;
while()
{
if(a[i]<s[now].val)
{
if(s[now].left!=-) now=s[now].left;
else
{
s[now].left=id;
s[id++].val=a[i];
break;
}
}
else
{
if(s[now].right!=-) now=s[now].right;
else
{
s[now].right=id;
s[id++].val=a[i];
break;
}
}
}
} // for(int i=0;i<id;i++) printf("%d %d %d\n",s[i].val,s[i].left,s[i].right); k=;
dfs();
if(check()==)
{
printf("YES\n");
k=; houxu();
for(int i=;i<n;i++)
{
printf("%d",h[i]);
if(i<n-) printf(" ");
else printf("\n");
}
continue;
} k=;
for(int i=;i<n;i++) swap(s[i].left,s[i].right);
dfs();
if(check()==)
{
printf("YES\n");
k=; houxu();
for(int i=;i<n;i++)
{
printf("%d",h[i]);
if(i<n-) printf(" ");
else printf("\n");
}
continue;
} printf("NO\n"); }
return ;
}

最新文章

  1. 39个让你受益的HTML5教程
  2. 解密 JavaScript 中的 this
  3. mysql的隐式转化
  4. Qt之图形视图框架
  5. linux内核值shmmax问题
  6. 【转载】HTTP Cookie学习笔记
  7. 无废话XML--DOM4J
  8. Groovy脚本检查html坏链接
  9. mybatis批量提交
  10. 29.QT-自定义窗口拖动、自定义QToolButton/QPushButton开关按钮、界面阴影,声音等总结
  11. 2017.11.18 手把手教你学51单片机-点亮LED
  12. js的浅复制和深复制
  13. ASIHTTPRequestErrorDomain Code=5
  14. Visual Studio 项目模板制作(四)
  15. C语言SQLite3基本操作Demo
  16. 自动化构建工具--gulp的初识和使用
  17. C Strange Sorting
  18. 【Python】Python处理csv文件
  19. Spring基本功能-扫描与继承
  20. DEBUG宏

热门文章

  1. NSNotificationCenter消息通信机制
  2. eclipse安卓引入库项目的正确方法
  3. JS调用OC方法
  4. 产生一个int数组,长度为100,并向其中随机插入1-100,不重复
  5. 将decimal类型的数据转成2.12这样价钱的显示方式
  6. 关于Winform中的用户代理
  7. 根据XML文件生成XSD文件
  8. HTML+CSS D07 边框、div
  9. 直接在script里面换样式IE6,7,8不兼容
  10. java 方法的重载的语法规则