hdu-3791-二叉搜索树
2014-08-21 21:34
288 查看
二叉搜索树
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2848 Accepted Submission(s): 1245
[align=left]Problem Description[/align]
判断两序列是否为同一二叉搜索树序列
[align=left]Input[/align]
开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
[align=left]Output[/align]
如果序列相同则输出YES,否则输出NO
[align=left]Sample Input[/align]
2
567432
543267
576342
0
[align=left]Sample Output[/align]
YES
NO 二叉树写不好,只能用二维数组过了
#include<stdio.h> #include<stdlib.h> #include<string.h> int a[11][3],b[11][3]; char c[11],d[11]; void hebing1(char x,char y) { int k; if(x>y) { k=x-'0'; if(a[k][0]==-1) a[k][0]=y-'0'; else hebing1(a[k][0]+'0',y); } else if(x<y) { k=x-'0'; if(a[k][1]==-1) a[k][1]=y-'0'; else hebing1(a[k][1]+'0',y); } return; } void hebing2(char x,char y) { int k; if(x>y) { k=x-'0'; if(b[k][0]==-1) b[k][0]=y-'0'; else hebing2(b[k][0]+'0',y); } else if(x<y) { k=x-'0'; if(b[k][1]==-1) b[k][1]=y-'0'; else hebing2(b[k][1]+'0',y); } return; } int main() { int n,i,j,k; while(scanf("%d",&n)&&n) { scanf("%s",c); for(i=0;i<11;i++) a[i][0]=a[i][1]=a[i][2]=-1; a[c[0]-'0'][2]=1; for(i=1;c[i]!='\0';i++) { hebing1(c[0],c[i]); a[c[i]-'0'][2]=1; } for(i=0;i<n;i++) { scanf("%s",d); //memset(b,-1,sizeof(b)); for(j=0;j<11;j++) b[j][0]=b[j][1]=b[j][2]=-1; b[d[0]-'0'][2]=1; for(j=1;d[j]!='\0';j++) { hebing2(d[0],d[j]); b[d[j]-'0'][2]=1; } for(k=j=0;j<10;j++) if(a[j][0]!=b[j][0]||a[j][1]!=b[j][1]||a[j][2]!=b[j][2]) { k=1; break; } if(k) printf("NO\n"); else printf("YES\n"); //for(j=0;j<10;j++) //printf("%d %d %d %d %d %d %d\n",j,a[j][0],a[j][1],a[j][2],b[j][0],b[j][1],b[j][2]); } } return 0; }
相关文章推荐
- HDU 3791 二叉搜索树(数组实现)
- hdu 3791 二叉搜索树
- HDU 3791 二叉搜索树 (基础题)
- HDU 3791 二叉搜索树
- hdu 3791 二叉搜索树
- HDU - 3791 二叉搜索树 (构建二叉搜索树)
- HDU-3791 二叉搜索树
- hdu 3791 二叉搜索树
- 二叉搜索树 HDU - 3791
- HDU 3791 二叉搜索树
- HDU 3791 二叉搜索树
- hdu 3791 二叉搜索树
- HDU_3791 二叉搜索树
- 二叉搜索树 HDU 3791
- HDU 3791 二叉搜索树
- hdu 3791 二叉搜索树
- 二叉搜索树HDU 3791
- HDU 3791 二叉搜索树
- 数据结构之二叉搜索树(排序树)HDU 3791
- hdu 3791 二叉搜索树(二叉树)