二叉排序树

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描写叙述

二叉排序树的定义是:或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上全部结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上全部结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 今天我们要推断两序列是否为同一二叉排序树

输入

開始一个数n,(1<=n<=20) 表示有n个须要推断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包括(0~9)的数字,没有反复数字,依据这个序列能够构造出一颗二叉排序树。
接下去的n行有n个序列。每一个序列格式跟第一个序列一样,请推断这两个序列能否组成同一颗二叉排序树。(数据保证不会有空树)

输出

演示样例输入

2
123456789
987654321
432156789
0

演示样例输出

NO
NO

提示

来源

演示样例程序

#include<iostream>
#include<cstdio>
#include<cstring>using namespace std;char s[11],c[11];
int a[11],b[12],len,num=0,z[11];
struct Tree
{int data;Tree *L,*R;
}*Root;
Tree *Creat()
{Tree *p;p=new Tree;p->L=NULL;p->R=NULL;return p;
}
int HHH(Tree *root)  //前序
{if(root!=NULL){z[num++]=root->data;HHH(root->L);HHH(root->R);}
}
int middle(Tree *root) //中序
{if(root!=NULL){middle(root->L);z[num++]=root->data;middle(root->R);}
}
Tree Build(Tree *root,int c[])  //排列树的建立
{Tree* p;root->data=c[0];for(int i=1; i<len; i++){p=root;while(1){if(p->data>c[i]){if(p->L==NULL){Tree *q;q=Creat();q->data=c[i];p->L=q;break;}elsep=p->L;}else{if(p->R==NULL){Tree *q;q=Creat();q->data=c[i];p->R=q;break;}elsep=p->R;}}}
}
int main()
{int n;while(~scanf("%d",&n)){if(n==0)break;Root=Creat();             //母树scanf("%s",s);len=strlen(s);for(int i=0; i<len; i++){a[i]=s[i]-'0';}num=0;Build(Root,a);//printf("%d",Root->L->data);middle(Root);int x[11],x1[11];for(int i=0; i<len; i++)x[i]=z[i];num=0;HHH(Root);for(int i=0; i<len; i++)x1[i]=z[i];// cout<<x[0];for(int i=0; i<n; i++)        //各比較树{Tree *Root1;Root1=Creat();scanf("%s",c);int len1=strlen(c);if(len==len1){for(int i=0; i<len; i++){b[i]=c[i]-'0';}num=0;Build(Root1,b);middle(Root1);//cout<<Root1->data;int y[11],y1[11];for(int i=0; i<len; i++)y[i]=z[i];//cout<<x[0]<<y[0];int flag=0;for(int i=0; i<len; i++){if(x[i]!=y[i])        //中序判定{flag=1;break;}}if(flag==0){num=0;HHH(Root1);        //后序判定for(int i=0; i<len; i++)y1[i]=z[i];for(int i=0; i<len; i++){if(x1[i]!=y1[i]){flag=1;break;}}}if(flag==0)printf("YES\n");else{printf("NO\n");}}else{printf("NO\n");}}}
}

转载于:https://www.cnblogs.com/llguanli/p/8726868.html

SDUT 2482 二叉排序树相关推荐

  1. sdut 二叉排序树

    二叉排序树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description 二叉排序树的定义 ...

  2. 数据结构实验之查找一:二叉排序树 (SDUT 3373)

    二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),也称二叉搜索树. #include <stdio.h> #include <s ...

  3. 数据结构(8-3)二叉排序树(查找、插入删除)

    目录 一.基础理论 1.特点: 2.结构: 二.查找 三.插入 四.删除 1.被删除的结点D是叶子结点 2.被删除的结点D仅有一个孩子 2-1.删除结点14(有左无右) 2-2.删除结点 10 (有右 ...

  4. 二叉排序树的相关操作

    #include <IOSTREAM.H> #include <STDLIB.H> //二叉树的生成和释放 typedef struct Node {int data;stru ...

  5. sdut 2401 最大矩形面积

    1http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2401 /* 2 最大矩形面积,把边界点加上 ...

  6. sdut AOE网上的关键路径(spfa+前向星)

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2498&cid=1304 题目描述 一个无环的有向图称为无环图(Directed Acyc ...

  7. 树和二叉树(四种遍历,建树)详解+二叉排序树(包含图像和相关习题)

    目录 树和二叉树 一.树 2.有序树和无序树 3.森林 4.树的基本性质 二.二叉树的概念 (1)二叉树的编号 1.二叉树和度为2的有序树的区别: 2.满二叉树 3.完全二叉树: 4.平衡二叉树: 5 ...

  8. 二叉排序树(完整代码)

    目录 二叉排序树 1.二叉排序树(代码) P1087 FBI树 (建树) HDU 4707 Pet 二叉排序树 先序遍历:根->左->右 中序遍历:左->根->右 后序遍历:左 ...

  9. 二分查找与二叉排序树

    文章目录 二分查找与二叉排序树 二分查找 1. 二分查找 2. 区间查找 3. 基于旋转数组的二分查找 二叉查找(排序)树 1. 插入节点 2. 查找节点 二分查找与二叉排序树 二分查找 1. 二分查 ...

  10. 平衡二叉排序树的创建和实现调整过程

    1.已知一棵二叉树的先序序列为:abcedfgh,中序序列为:bcedaghf,画出该二叉树,并给出其后序序列. 2.已知一组关键字为(15,11,22,5,66,58,36,10,38),按照该元素 ...

最新文章

  1. mysql创建表语句 引擎、编码和字符集设置
  2. LaTeX如何让两张图并排显示
  3. celery 运行时 (from . import async, base)SyntaxError: invalid syntax 异常的解决方案
  4. 案例 | 锋芒易商如何做到年省 50 人天?
  5. 【数据结构与算法】之深入解析“地图分析”的求解思路与算法示例
  6. python有多少库存_库存究竟多少才算合理?
  7. 诺奖得主们年轻时都有哪些特征?擅长合作、论文高产是关键
  8. win7焦点总是不停丢失的解决方法
  9. openlayers 中的一些方法
  10. python简介pdf_Python以及QuTip包简介.PDF
  11. select2 清除已选项
  12. 安装配置文件共享协议(SAMBA)
  13. CUDA: 共享内存与同步
  14. Windows系统内置测试工具(winsat)
  15. 教你使用JAVA代码重启路由器(TP-LINK)
  16. codecademy SQL 编程系列二 Relation Databases Statements
  17. 自动透视校正为四边形对象
  18. java上传文件的要点_Uploadify上传文件方法
  19. Novell云计算大会在京开幕
  20. cs5 dreamweaver ox_dreamweaver cs5软件下载-dreamweaver cs5最新版本v11.0 官方版 - 极光下载站...

热门文章

  1. JS实现改变复选框选中行中指定单元格背景色(状态改变事件)
  2. 表格送货单自动编号vba_制作仓库入库单,自动登记商品数据,这段代码只需三步搞定...
  3. 经典神经网络 -- MobileNet : 设计原理与pytorch实现
  4. QuickBI和DataV
  5. putty秘钥转换成xhell支持的格式
  6. gitgithub拾遗(一)——git
  7. 【TDA4系列】CCS 最新版本安装与教程地址
  8. 22 模块:宏伟蓝图
  9. Accurate, Large Minibatch SGD
  10. 命名实体识别研究综述