SDUTACM 二叉排序树
来源:互联网 发布:淘宝新款男士长袖衬衣 编辑:程序博客网 时间:2024/06/05 16:49
题目描述
二叉排序树的定义是:或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 今天我们要判断两序列是否为同一二叉排序树
输入
开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉排序树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉排序树。(数据保证不会有空树)
输出
示例输入
21234567899876543214321567890
示例输出
NONO
我的代码:
#include<stdio.h>#include<stdlib.h>#include<string.h>struct hh { int data; struct hh *l; struct hh *r;};int k;int pqx[20],b,phx[20];struct hh *creat(struct hh *p,int x){ if(p==NULL) { p=(struct hh *)malloc(sizeof(struct hh)); p->data=x; p->l=NULL; p->r=NULL; } else { if(x<p->data) p->l=creat(p->l,x); else p->r=creat(p->r,x); } return p;}void inp(struct hh *p){ if(p!=NULL) { pqx[b++]=p->data; inp(p->l); inp(p->r); }}void postp(struct hh *p){ if(p!=NULL) { postp(p->l); postp(p->r); phx[b++]=p->data; }}void main(){ int n,i,m,x,l,j; struct hh *p,*t; char a[20],d[20]; while(scanf("%d",&n)!=EOF) { if(n==0) break; else { scanf("%s",&d); m=strlen(d); p=NULL; for(i=0;i<m;i++) { x=d[i]-'0'; p=creat(p,x); } for(i=0;i<n;i++) { k=1; t=NULL; scanf("%s",&a); l=strlen(a); if(l!=m) { k=0; printf("NO\n"); } else { b=0; postp(p);//后续 b=0; inp(p);//前序 int sum=0; for(j=0;j<l;j++) { //printf("%d#%d\n",pqx[j],a[j]-'0'); if(pqx[j]!=a[j]-'0') { sum++; break; } } //printf("--------\n"); for(j=0;j<l;j++) { //printf("%d#%d\n",phx[j],a[j]-'0'); if(phx[j]!=a[j]-'0') { sum++; break; } } //printf("--------\n"); for(j=0;j<l;j++) { //printf("%d#%d\n",d[j]-'0',a[j]-'0'); if(d[j]-'0'!=a[j]-'0') { sum++; break; } } if(sum==3) { k=0; printf("NO\n"); } if(k==1) printf("YES\n"); } } } }}
0 0
- SDUTACM 二叉排序树
- sdutacm-二叉排序树
- SDUTACM 数据结构实验之查找一:二叉排序树
- sdutacm-数据结构实验之查找一:二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- 二叉排序树
- Docker Machine快速安装Docker环境(二)
- 原码、补码、反码详解
- HTK学习笔记 (1)
- 树莓派3串口使用问题的解决方法
- Docker介绍与安装使用(一)
- SDUTACM 二叉排序树
- Docker数据持久化与容器迁移(三)
- 关于获取dialog中edittext的值问题
- 项目经理应该知道的97件事--避免打地鼠式开发
- Docker网络管理及容器跨主机通信(四)
- SDUTACM 数据结构实验之查找一:二叉排序树
- Android开发十大高效工具
- 十大云计算工具
- 设计模式总结(未完待续)