这道题也当做二叉搜索树的建树模板。


这道题其实直接把这颗树建出来后,比较前序序列和中序序列即可,这里我用的数组实现,更好写和查错qwq。

code:

#include <bits/stdc++.h>
using namespace std;
int n , len;
string a , b , c;
char tree[400040] , pd[400040] , st[400040];
void t_insert(int i , char x){
if(tree[i] == '?'){ //如果查找到了空位置,那么那个位置即为该插入的位置
tree[i] = x;
return;
}
if(tree[i] > x) t_insert(2 * i , x); //小左大右
else t_insert(2 * i + 1 , x);
}
void p_insert(int i , char x){
if(pd[i] == '?'){
pd[i] = x;
return;
}
if(pd[i] > x) p_insert(2 * i , x);
else p_insert(2 * i + 1 , x);
}
void t_print(int i , int f){
if(tree[i] == '?') return;
if(!f) a += tree[i]; //前序
t_print(2 * i , f);
if(f) b += tree[i]; //中序
t_print(2 * i + 1 , f);
}
void p_print(int i , int f){
if(pd[i] == '?') return;
if(!f) c += pd[i];
p_print(2 * i , f);
if(f) c += pd[i];
p_print(2 * i + 1 , f);
}
int main(){
while(cin >> n){
if(n == 0) break;
cin >> st;
len = strlen(st);
fill(tree + 1 , tree + 400040 + 1 , '?'); //初始化
for(int i = 0; i <= len - 1; i++) t_insert(1 , st[i]); //建树
a = ""; //清空
b = "";
t_print(1 , 0); //求序列
t_print(1 , 1);
while(n--){ //同上~
cin >> st;
fill(pd + 1 , pd + 400040 + 1 , '?');
for(int i = 0; i <= len - 1; i++) p_insert(1 , st[i]);
c = "";
p_print(1 , 0);
if(a != c){
cout << "NO" << endl;
continue;
}
c = "";
p_print(1 , 1);
if(b != c){
cout << "NO" << endl;
continue;
}
cout << "YES" << endl;
}
}
return 0;
}

最新文章

  1. CentOS7 安装MongoDB 3.0服务器
  2. 算法练习之leetcode系列1-3
  3. paip.python php的未来预测以及它们的比较优缺点
  4. Codeforces Round #329 (Div. 2)
  5. ondragover 事件规定在何处放置被拖动的数据
  6. 22 java常用方法
  7. 某Java游戏服务器用到的知识
  8. BZOJ 2946: [Poi2000]公共串( 后缀自动机 )
  9. SQL Server索引进阶:第三级,聚集索引
  10. FileSystemWatcher类监控文件的更改状态并且实时备份文件
  11. TP5 中实现支付宝支付 利用model层调用支付宝类库
  12. AJAX请求返回HTTP 400 错误 - 请求无效 (Bad request)
  13. findHomography(src_points, dst_points, CV_RANSAC)
  14. ubuntu 更换为mac主题
  15. poi横纵动态导入
  16. 7.11js的总结
  17. MySQL innodb_flush_method 【转载】
  18. mycat中schema.xml的一些解释
  19. 利用apache伪静态技术防止盗链
  20. C#语言正则用法

热门文章

  1. Java实现 蓝桥杯 算法训练 求和求平均值
  2. Java实现 LeetCode 667 优美的排列 II(暴力)
  3. Java实现 LeetCode 377 组合总和 Ⅳ
  4. Java实现 LeetCode 102 二叉树的层次遍历
  5. java实现算年龄
  6. java实现第三届蓝桥杯拼音字母
  7. Jmeter加密函数__digest总结
  8. 判断IP是否是IPV4
  9. 2、react-生命周期1※※※
  10. [noi.ac省选模拟赛]第12场题解集合