7-1 是否同一棵二叉搜索树(25 分)
来源:互联网 发布:农村淘宝面试题目 编辑:程序博客网 时间:2024/06/08 14:55
7-1 是否同一棵二叉搜索树(25 分)
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。
输入格式:
输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最后L行,每行给出N个插入的元素,属于L个需要检查的序列。
简单起见,我们保证每个插入序列都是1到N的一个排列。当读到N为0时,标志输入结束,这组数据不要处理。
输出格式:
对每一组需要检查的序列,如果其生成的二叉搜索树跟对应的初始序列生成的一样,输出“Yes”,否则输出“No”。
输入样例:
4 23 1 4 23 4 1 23 2 4 12 12 11 20
输出样例:
YesNoNo
#include <bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3fconst int maxn = 1e3 + 10;struct Tree{ int v;} t[maxn<<2];int s1[maxn<<2];int s2[maxn<<2];int n;int m;void Insert(int z){ int x = 1, y = 1; while(t[x].v != INF) { y = x; if(t[x].v > z) { x = x << 1; } else { x = x << 1 | 1; } } if(t[y].v == INF) { t[1].v = z; } else if(z < t[y].v) { t[y<<1].v = z; } else { t[y<<1|1].v = z; }}void PreOrder1(int i){ if(t[i].v != INF) s1[i] = t[i].v; else return; PreOrder1(i<<1); PreOrder1(i<<1|1);}void PreOrder2(int i){ if(t[i].v != INF) s2[i] = t[i].v; else return; PreOrder2(i<<1); PreOrder2(i<<1|1);}int main(){ while(cin >> n && n) { for(int k = 0 ; k < maxn * 4 ; k++) t[k].v = INF; for(int k = 0 ; k < maxn * 4 ; k++) s1[k] = INF; cin >> m ; int x; for(int i = 0 ; i < n ; i++) { cin >> x; Insert(x); } PreOrder1(1); for(int i = 0 ; i < m ; i++) { for(int k = 0 ; k < maxn * 4 ; k++) t[k].v = INF; for(int k = 0 ; k < maxn * 4 ; k++) s2[k] = INF; for(int j = 0 ; j < n ; j ++) { cin >> x; Insert(x); } PreOrder2(1); for(int k = 0 ; k < maxn * 4 ; k++) { if(s1[k] != s2[k]) { cout << "No" << endl; break; } if(k == maxn * 4 - 1) { cout << "Yes" << endl; } } } } return 0;}
阅读全文
0 0
- 5-7 是否同一棵二叉搜索树 (25分)
- 是否同一棵二叉搜索树(25 分)
- 7-1 是否同一棵二叉搜索树(25 分)
- PTA 7-1 是否同一棵二叉搜索树(25 分) 建树比较
- 7-1 是否同一棵二叉搜索树(25 分)
- 5-4 是否同一棵二叉搜索树 (25分)
- 5-4 是否同一棵二叉搜索树 (25分)
- 是否同一棵二叉搜索树 (25分)
- 5-4 是否同一棵二叉搜索树 (25分)
- 04-树4 是否同一棵二叉搜索树(25 分)
- 04-树4 是否同一棵二叉搜索树(25 分)
- 04-树4 是否同一棵二叉搜索树(25 分)
- 04-树4 是否同一棵二叉搜索树(25 分)
- 5-4 是否同一棵二叉搜索树 (25分)(两种方法)
- 04-树4 是否同一棵二叉搜索树 (25分)
- 04-树4 是否同一棵二叉搜索树 (25分)
- 04-树4 是否同一棵二叉搜索树 (25分)
- 04-树4 是否同一棵二叉搜索树 (25分)
- MySQL数据库--外键约束及外键使用
- 用Construct2制作你的第一款游戏
- Android异步消息处理机制
- hashcode()与equals()
- Log4Qt 使用笔记(一)
- 7-1 是否同一棵二叉搜索树(25 分)
- Shader内置函数
- Java的类、方法、属性(多态,继承,封装)
- java.lang.IllegalStateException: The specified child already has a parent
- JSONP原理探究
- windows&linux设置系统自动退出时间(无操作超时设置)
- RMQ静态区间最值查询
- C++中的常引用
- (转)正则表达式