数据结构实验之查找一:二叉排序树 Time Limit: 400MS Memory Limit: 65536KB
来源:互联网 发布:淘宝手机回收的的钱 编辑:程序博客网 时间:2024/06/03 16:30
数据结构实验之查找一:二叉排序树
Time Limit: 400MS Memory Limit: 65536KB
SubmitStatistic
Problem Description
对应给定的一个序列可以唯一确定一棵二叉排序树。然而,一棵给定的二叉排序树却可以由多种不同的序列得到。例如分别按照序列{3,1,4}和{3,4,1}插入初始为空的二叉排序树,都得到一样的结果。你的任务书对于输入的各种序列,判断它们是否能生成一样的二叉排序树。
Input
输入包含若干组测试数据。每组数据的第1行给出两个正整数N (n < = 10)和L,分别是输入序列的元素个数和需要比较的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列生成一颗二叉排序树。随后L行,每行给出N个元素,属于L个需要检查的序列。
简单起见,我们保证每个插入序列都是1到N的一个排列。当读到N为0时,标志输入结束,这组数据不要处理。
Output
对每一组需要检查的序列,如果其生成的二叉排序树跟初始序列生成的二叉排序树一样,则输出"Yes",否则输出"No"。
Example Input
4 23 1 4 23 4 1 23 2 4 12 12 11 20
Example Output
YesNoNo
# include<stdio.h># include<string.h># include<stdlib.h>struct node{ int data; struct node *l, *r;};int k, l, a[1100], b[1100];struct node *creat(struct node *root, int x){ if(root==NULL) { root=(struct node *)malloc(sizeof(struct node)); root->data=x; root->l=NULL; root->r=NULL; } else { if(x<root->data) root->l=creat(root->l, x); else root->r=creat(root->r, x); } return root;}void str1(struct node *root){ if(root) { a[k++]=root->data; str1(root->l); str1(root->r); }}void str2(struct node *root){ if(root) { b[l++]=root->data; str2(root->l); str2(root->r); }}int main(){ int i, n, m, x; struct node *root, *root1; while(~scanf("%d%d", &n, &m)&&n) { root=NULL; for(i=0; i<n; i++) { scanf("%d", &x); root=creat(root, x); } k=0; memset(a, 0, sizeof(a)); str1(root); while(m--) { l=0; root1=NULL; for(i=0; i<n; i++) { scanf("%d", &x); root1=creat(root1, x); } memset(b, 0, sizeof(b)); str2(root1); for(i=0; i<n; i++) { if(a[i]!=b[i]) break; } if(i==n) printf("Yes\n"); else printf("No\n"); } } return 0;}
阅读全文
0 0
- 数据结构实验之查找一:二叉排序树 Time Limit: 400MS Memory Limit: 65536KB
- 数据结构实验之二叉树一:树的同构数据结构实验之二叉树一:树的同构 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem D
- 数据结构实验之二叉树三:统计叶子数 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description
- 数据结构实验之排序二:交换排序 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 冒泡排序和
- 算符优先系列之(一)Firstvt和Lastvt集 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Descri
- SDUTACM Anohana: The Flower We Saw That Day Time Limit: 1000MS Memory Limit: 65536KB
- 树-堆结构练习——合并果子之哈夫曼树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descrip
- 1-1 欢迎来的C++世界 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 通
- E - 排序 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
- B - 素数判定 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
- C - 字符串统计 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
- D - 折线分割平面 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
- A - A+B for Input-Output Practice (V) Time Limit:1000MS Memory Limit:32768KB 64bit IO Form
- C - Climbing Worm Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
- L - 空心三角形 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
- M - 人见人爱A+B Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
- N - 人见人爱A-B Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
- 【基础试题】百钱买百鸡 Time Limit:1000MS Memory Limit:65536K Total Submit:1501 Accepted:441 Description 一
- JAVA集合体系详解
- BZOJ 3884: 上帝与集合的正确用法
- MD算法Java实现
- 人工智能里的数学修炼 | 交叉熵损失函数:从信息说起
- 12.3-12.8学习与思考
- 数据结构实验之查找一:二叉排序树 Time Limit: 400MS Memory Limit: 65536KB
- MBG代码生成
- java详解 --- 多态
- Android安全攻防战,反编译与混淆技术完全解析(上)
- Tomcat 7服务器线程模型
- 利用函数实现n阶方阵的行列置换
- Distinctive Image Features from Scale-Invariant Keypoints-SIFT算法译文
- 不同包activity跳转问题
- Angular服务