USACO 3.4American Heritage 中序,前序构建二叉树
来源:互联网 发布:mac如何强制关闭软件 编辑:程序博客网 时间:2024/05/20 18:18
USACO 3.4American Heritage
http://www.nocow.cn/index.php/Translate:USACO/heritage
思路就是: 画个简单二叉树,写出它的前序和中序。。然后把自己当成电脑,把模拟过程,转化为一行行递归的代码
/*ID: m1562501LANG: C++TASK: heritage*/#include <cstdio>#include<iostream>#include<string>#include<stdlib.h>#include<map>#include<string.h>#include<vector>#include <cmath>#include<algorithm>#include<set>#include<bitset>using namespace std;typedef long long ll;char a[100],b[100];struct node{ char val; node *left,*right;};void build(int l,int r,int rt,node *e){ // printf("%d %d %d %c\n",l,r,rt,e->val); for(int i=l;i<=r;i++) { if(a[i]==b[rt]) { if(l<=i-1) { node *le=(struct node *)malloc(sizeof(struct node)); le->val =b[rt+1]; le->left =NULL ; le->right =NULL; e->left =le; // printf("le-val %c \n",le->val); if(l<i-1) build(l,i-1,rt+1,le); } if(i+1<=r) { node *re=(struct node *)malloc(sizeof(struct node)); re->val =b[rt+i-l+1]; re->left =NULL ; re->right =NULL; e->right=re; // printf("re-val %c \n",re->val); if(i+1<r) build(i+1,r,rt+i-l+1,re); } return ; } }}int cnt=0; void print(node *root){ // printf("%c \n",root->val ); if(root->left!=NULL) { print(root->left) ; } if(root->right!=NULL) { print(root->right) ; } //if(root->val>='A'&&root->val<='Z') printf("%c",root->val);}int main(){ freopen("F:\\123.txt","r",stdin); // freopen("heritage.in","r",stdin); // freopen("heritage.out","w",stdout); int n; scanf("%s%s",a+1,b+1); node *root=(struct node*)malloc(sizeof(struct node)); node *tmp=(struct node*)malloc(sizeof(struct node)); root->val=b[1]; root->left =tmp; // printf("len %d\n",strlen(a+1)); build(1,strlen(a+1),1,root); print(root); printf("\n"); return 0;}
0 0
- USACO 3.4American Heritage 中序,前序构建二叉树
- USACO Section 3.4 American Heritage - 知道前序遍历与中序遍历求后序遍历
- USACO section 3.4 American Heritage(二叉树序列)
- USACO 3.4 American Heritage (heritage)
- USACO 3.4 American Heritage
- USACO 3.4.3 American Heritage
- USACO/heritage 3.4.2 前序 中序 后序
- USACO 3.4 American Heritage美国血统 (树的遍历)
- USACO 3.4 American Heritage美国血统 (树的遍历)
- USACO-Section 3.4 American Heritage (分治)
- usaco American Heritage
- usaco American Heritage
- USACO American Heritage
- 【洛谷P1827】【USACO】 美国血统 American Heritage 由二叉树两个序列求第三个序列
- USACO American Heritage 解题报告
- USACO Training 3.4.2 American Heritage 题解与分析
- 【USACO题库】3.4.2 American Heritage美国血统
- 【USACO题库】3.4.2 American Heritage美国血统
- Windows下使用VisualSVN Server搭建SVN服务器
- June 11th 模拟赛B T2 翻山越岭 Solution
- CSS——样式设置技巧(居中和隐藏)
- 多线程中使用信号机制 pthread_sigmask()
- Linux i2c子系统
- USACO 3.4American Heritage 中序,前序构建二叉树
- tomcat部署项目如何去掉项目名称
- 接口回调的实现
- MySQL索引失效的几种情况
- 性能测试——造数
- libpcap1.7.4在Ubuntu_14.04_LTS上的使用
- select from table where 1=1
- 从零开始写光栅化渲染器0:创建windows窗口
- hdu 1754 线段树区间最值加更新