hdu3791(二叉搜索树构造)
来源:互联网 发布:阿里云备案服务号申请 编辑:程序博客网 时间:2024/05/10 10:53
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3791
题目大意:给出若干行数列,其中第一行的数列为基本二叉搜索树的模式,剩下的数列都为需要比较的数列,若构造出的二叉搜索树与基本数列相同,则输出“YES”,否则输出“NO”;
解题思路:根据题目给出的数列构造二叉搜索树,然后循环遍历树,判断是否相等。因为题目较简单,实用数组进行简单的模拟,根据左子节点是根节点下标的2倍,而右子节点是根节点下标的2倍加1.
AC代码:
#include <iostream>#include <cstring>using namespace std;void inserttree(int *tr,int value){ int index=1; while(tr[index]!=-1) { if(tr[index]<value) index = index*2+1; else index = index*2; } tr[index] = value;}void buildtree(int *tree,char *in,int len){ for(int i=0;i<len;i++) { inserttree(tree,in[i]-'0'); }}bool compare(int *a,int *b,int len){ bool f = true; for(int i=0;i<len;i++) { if(a[i]!=b[i])f = false; } return f;}int main(){ int source[1000]; int pattern[1000]; int n; while(cin>>n) { memset(source,-1,sizeof(source)); if(n==0)break; for(int i=0;i<=n;i++) { char putin[1000]; cin>>putin; int len = strlen(putin); if(i==0)buildtree(source,putin,len); else { memset(pattern,-1,sizeof(pattern)); buildtree(pattern,putin,len); bool flag = compare(source,pattern,512); if(flag)cout<<"YES"<<endl; else cout<<"NO"<<endl; } } } return 0;}
0 0
- hdu3791(二叉搜索树构造)
- hdu3791二叉搜索树
- HDU3791:二叉搜索树
- hdu3791 二叉搜索树
- hdu3791 二叉搜索树
- HDU3791 二叉搜索树
- HDU3791-二叉搜索树
- 二叉搜索树hdu3791
- hdu3791--二叉搜索树
- HDU3791 二叉搜索树(构建二叉搜索树模板)
- 【二叉搜索数】HDU3791二叉搜索树
- Hdu3791 - 二叉搜索树 - 二叉树
- hdu3791 二叉搜索树(BST的建立)
- 二叉排序树:HDU3791-二叉搜索树(用指针建立二叉排序树)
- 首道二叉树 HDU3791:二叉搜索树
- 浙大计算机研究生复试上机考试(2010)——二叉搜索树(hdu3791)
- 构造二叉搜索树C++
- Python 构造二叉搜索树
- 【Caffe】Blobs数据结构的Python表示
- linux下,用crontab定时执行scrapy任务
- IOS study:IOS中的变量定义方法以及程序结构
- OC学习日记01
- 兼容pc端的背景音乐播放代码
- hdu3791(二叉搜索树构造)
- wei 老师写的链表(参考)
- 106.网络分层模型及SOCKET/TCP/UDP/HTTP区别和联系
- WordPress里的所有url rewrite规则清单
- 自定义DialogFragment宽度
- 翻译:no more findViewById
- java线程里关键字与关键方法
- JSPatch的初步学习
- No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse