PAT 1119. Pre- and Post-order Traversals (30)
来源:互联网 发布:汽车cae软件 编辑:程序博客网 时间:2024/06/05 09:37
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>using namespace std;int n,pre[35],post[35],flag=0;int ans[35],k;struct node{ int num; struct node* left; struct node* right;};struct node* build(struct node* t,int preleft,int preright,int postleft,int postright){//cout<<preleft<<' '<<preright<<' '<<postleft<<' '<<postright<<endl; if((postright-postleft)!=(preright-preleft)) return t; if((postright<postleft)||(preright<preleft)) return t;// if(postright>n||postleft<0||preright>n||preleft<0) return t; if(t==NULL){ struct node* p=(struct node*)malloc(sizeof(struct node)); if(p==NULL) return p; p->num=pre[preleft]; p->left=NULL; p->right=NULL; t=p; // free(p); } if(preleft<preright){ int len=0,mid,i; for(i=postleft;i<postright;i++){ if(post[i]==pre[preleft+1]){ break; } } len=i+1-postleft; t->left=build(t->left,preleft+1,preleft+len,postleft,i); len=postright-(i+1); t->right=build(t->right,preright-len+1,preright,i+1,postright-1); } return t;}int level(struct node* t){// cout<<t<<endl; if(t==NULL) return 0; if((t->left!=NULL&&t->right==NULL)||(t->left==NULL&&t->right!=NULL)){// cout<<"No"<<endl; flag=1; } if(t->left!=NULL){ level(t->left); }// cout<<t->num<<' '; ans[k++]=t->num; if(t->right!=NULL){ level(t->right); } return 0;}int main(){ int n; flag=0; cin>>n; for(int i=0;i<n;i++){ cin>>pre[i]; } for(int i=0;i<n;i++){ cin>>post[i]; } struct node* t; t=NULL; t=build(t,0,n-1,0,n-1); level(t); if(flag){ cout<<"No"<<endl; cout<<ans[0]; for(int i=1;i<k;i++){ cout<<" "<<ans[i]; } cout<<endl; } else{ cout<<"Yes"<<endl; cout<<ans[0]; for(int i=1;i<k;i++){ cout<<" "<<ans[i]; } cout<<endl; } return 0;}
1 0
- PAT--1119. Pre- and Post-order Traversals
- (PAT)1119. Pre- and Post-order Traversals
- 【PAT】1119. Pre- and Post-order Traversals
- PAT 1119. Pre- and Post-order Traversals (30)
- 【PAT】1119. Pre- and Post-order Traversals (30)
- PAT 1119. Pre- and Post-order Traversals (30)
- pat 1119. Pre- and Post-order Traversals (30)
- PAT 1119. Pre- and Post-order Traversals (30)
- 【PAT】【Advanced Level】1119. Pre- and Post-order Traversals (30)
- PAT 1119. Pre- and Post-order Traversals (30) 用前序、后序求中序
- PAT 甲级 1119. Pre- and Post-order Traversals (30)
- 1119. Pre- and Post-order Traversals (30) PAT
- 1119. Pre- and Post-order Traversals (30)
- 1119. Pre- and Post-order Traversals (30)
- 1119. Pre- and Post-order Traversals (30)
- 1119. Pre- and Post-order Traversals (30)
- 1119. Pre- and Post-order Traversals (30)
- 1119. Pre- and Post-order Traversals (30)
- 使用Jersey和Apache Tomcat构建RESTful Web服务
- 继承
- die和exit的区别
- java SWT入门:自定义背景透明且可鼠标拖动改变尺寸和位置的Composite
- 第十四周项目1(1)-验证折半算法
- PAT 1119. Pre- and Post-order Traversals (30)
- Harris角点检测完以后如何进行配准
- android重启应用的方法
- Springboot ServletContextListener 注入失败解决方案
- 有个空语句的问题
- MPEG-7实例入门
- response.setHeader各种用法
- 教你如何实现淘宝天猫的首页可以滑动的gridview导航
- 硅谷黑客黑了公交系统 旧金山市民免费享受公交一天