HDU—3791 二叉搜索树 (可以用数组,,,,建树)
来源:互联网 发布:彩票数据分析预测软件 编辑:程序博客网 时间:2024/06/07 01:11
判断两序列是否为同一二叉搜索树序列
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
25674325432675763420
YESNO什么事二叉搜索树呢?
若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉搜溹树。。
对于初学者来说,什么链表,建树,遍历等等弄得·一团糟,,,对于这道题来说我们只要知道什么是二叉搜索树就行。这道题的数据也不大,直接用数组。。然后还原,比较是否相等就行啦,
#include<stdio.h>#include<string.h>int n,la,lb;char a[30],b[30],ans[30];int sa[1100],sb[1100];void build(int l,char *s1,int *s2){ for(int i=0;i<l;i++) { int t=s1[i]-'0'; for(int j=1;j<1100;j++) { if(s2[j]==-1) { s2[j]=t; break; } else if(s2[j]<t) j=j*2+1; else j=2*j; } }}int main(){ while(scanf("%d",&n)&&n) { scanf("%s",a); la=strlen(a); memset(sa,-1,sizeof(sa)); build(la,a,sa); while(n--) { int f=0; scanf("%s",b); lb=strlen(b); memset(sb,-1,sizeof(sb)); build(lb,b,sb); for(int i=0;i<1100;i++) { if(sa[i]!=sb[i]) { f=1; break; } } if(f)printf("NO\n"); else printf("YES\n"); } } return 0;}
阅读全文
1 0
- HDU—3791 二叉搜索树 (可以用数组,,,,建树)
- BST 二叉搜索树 (动态建树与静态建树)
- HDU 3791 二叉搜索树(用数组保存树)
- JD 1009:二叉搜索树(静态数组建树)
- HDU 3791 比较两棵二叉搜索树是否相同(建树,比较)
- HDU 3791 二叉搜索树(数组实现)
- HDU 5444-二叉树的遍历+建树
- HDU 1671 Phone List 二叉树水题 数组建树法
- HDU 6096 String 字典树数组建树
- 数据结构——二叉树的建立和遍历(递归建树&层序遍历建树)
- hdu 3791 二叉搜索树
- HDU 3791 二叉搜索树
- 【二叉搜索树】hdu 3791
- HDU-3791二叉搜索树
- HDU 3791 二叉搜索树
- HDU 3791 二叉搜索树
- HDU 3791 二叉搜索树
- hdu-3791-二叉搜索树
- InputMethodService详解
- Java 字节流InputStream、OutputStream、FileInputStream、FileOutputStream
- AS 代码混淆+res混淆
- 【LeetCode】654. Maximum Binary Tree
- Matlab函数bwmorph简介 图像处理
- HDU—3791 二叉搜索树 (可以用数组,,,,建树)
- SpringMVC
- 基于STM32+机智云物联网平台的家电状态显示及控制系统
- (14)问卷调查:两种方式className、div样式属性值改变、单选按钮性格测试
- git clone 遇到"unable to access '……':error setting certificate verify locations"问题
- Android开发--与后台通信(一)--API数据获取
- Js 执行上下文
- Java对象的序列化与反序列化那点事
- python爬虫----简单的抓取斗鱼弹幕