hdoj3791二叉搜索树

来源:互联网 发布:双十一数据图 编辑:程序博客网 时间:2024/06/05 15:18

二叉搜索树

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3537    Accepted Submission(s): 1550


Problem Description
判断两序列是否为同一二叉搜索树序列
 

Input
开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
 

Output
如果序列相同则输出YES,否则输出NO
 

Sample Input
25674325432675763420
 

Sample Output
YESNO
 

Source
浙大计算机研究生复试上机考试-2010年
 


 

#include<iostream>#include<cstdio>#include<cstdlib>#include<string>using namespace std;bool compare(string a,string b){if(a==b)return true;if(a[0]!=b[0])return false;string lefta,leftb,righta,rightb;for(int i=1;i<a.size();++i){if(a[i]>a[0]){righta+=a[i];}else {lefta+=a[i];}if(b[i]>b[0]){rightb+=b[i];}else {leftb+=b[i];}}if(compare(lefta,leftb)&&compare(righta,rightb)){return true;}else {return false;}}int main(){int n,i,j;string a,b;while(scanf("%d",&n),n){cin>>a;while(n--){cin>>b;if(compare(a,b)){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;}}}return 0;}


 


 

 

 

0 0