2 567432 543267 576342 0
YES NO
1 #include <iostream>
2 #include <string.h>
3 using namespace std;
4 int main()
5 {
6 char l1[10];
7 int n;
8 while(cin>>n){
9 if(n==0) break;
10 cin>>l1;
11 int tree[1025];
12 memset(tree,-1,sizeof(tree));
13 for(int i=0;l1[i];i++){ //构造二叉搜索树
14 int num = l1[i] - ‘0‘;
15 int j = 1;
16 while(tree[j]!=-1){
17 if(num <= tree[j])
18 j = j*2;
19 else
20 j = j*2 + 1;
21 }
22 tree[j] = num;
23 }
24 while(n--){ //输入n个序列
25 char l2[10];
26 cin>>l2;
27 int tree2[1025];
28 memset(tree2,-1,sizeof(tree2));
29 for(int i=0;l2[i];i++){ //构造比较二叉搜索树
30 int num = l2[i] - ‘0‘;
31 int j = 1;
32 while(tree2[j]!=-1){
33 if(num <= tree2[j])
34 j = j*2;
35 else
36 j = j*2 + 1;
37 }
38 tree2[j] = num;
39 }
40 int i;
41 for(i=0;i<=1024&&tree[i]==tree2[i];i++); //比较
42 if(i>1024)
43 cout<<"YES"<<endl;
44 else
45 cout<<"NO"<<endl;
46 }
47 }
48 return 0;
49 }
Freecode : www.cnblogs.com/yym2013
hdu 3791:二叉搜索树(数据结构,二叉搜索树 BST)
原文:http://www.cnblogs.com/yym2013/p/3552800.html