二叉搜索树(HDU3791)
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
567432
543267
576342
0
NO
#include <stdio.h>
#include <string.h>
int a[1024],b[1024];
void cta(char c,int i)//这个和下面可以合并一个,用指针传递数组
{
if(a[i]==0)
{a[i]=c;return;}
if(a[i]>c)
cta(c,i<<1);
else
cta(c,i<<1|1);
}
void ctb(char c,int i)
{
if(b[i]==0)
{b[i]=c;return;}
if(b[i]>c)
ctb(c,i<<1);
else
ctb(c,i<<1|1);
}
int cmp(int j)//这里是让构建好的2棵树比较!
{
int m1,m2;
if(a[j]!=b[j])
return 0;
if(a[j]==0)
return 1;
m1=cmp(j<<1);
m2=cmp(j<<1|1);
return m1>m2?m2:m1;//递归回程,判断树是否一样
}
int main()
{ int i,n;
char c[13],s[13];
while(scanf("%d",&n),n)
{ memset(a,0,sizeof(a));
scanf("%s",c);//输入原序列
for(i=0;c[i]!='\0';i++)
cta(c[i],1);
while(n--)
{ memset(b,0,sizeof(b));//开始这里和a放一起了,就错了!
scanf("%s",s);
for(i=0;s[i]!='\0';i++)
ctb(s[i],1);
if(cmp(1))
printf("YES\n");
else
printf("NO\n");
}
}
return 0;
}
这样做速度还是快的,0Ms,做的第一道二叉树题目!
-----江财小子
转载于:https://www.cnblogs.com/372465774y/archive/2012/03/28/2421684.html
二叉搜索树(HDU3791)相关推荐
- HDU3791 二叉搜索树【二叉搜索树】
二叉搜索树 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- HDU3791(二叉搜索树)
这道题的主要是理解二叉搜索树的构建:当根不为空的时候,注意是左边的节点值都小于根节点值,右边的节点值都大于根节点值. #include<iostream> #include<algo ...
- 【ACM】二叉搜索树(Binary Search Tree /BS Tree) 小结
动态管理集合的数据结构--二叉搜索树 搜索树是一种可以进行插入,搜索,删除等操作的数据结构,可以用字典或者优先队列. 二叉排序树又称为二叉查找树,他或者为空树,或者是满足如下性质的二叉树. (1)若它 ...
- LeetCode简单题之二叉搜索树的最小绝对差/最小距离
题目 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 . 差值是一个正数,其数值等于两值之差的绝对值. 示例 1: 输入:root = [4,2,6,1,3] 输出: ...
- LeetCode简单题之二叉搜索树的范围和
题目 给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和. 示例 1: 输入:root = [10,5,15,3,7,null,18], low = 7, ...
- 【剑指Offer】23、二叉搜索树的后序遍历序列
题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路: 对于后续遍历序列,序 ...
- 消除左递归实验代码_「leetcode」108. 构造二叉搜索树【递归】【迭代】详解!
构造二叉搜索树,一不小心就平衡了 ❞ 108.将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树 ...
- 剑指offer:面试题36. 二叉搜索树与双向链表
题目: 二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 为了让您更好地理解问题,以下面的二叉搜索树为例: ...
- 剑指offer:面试题33. 二叉搜索树的后序遍历序列
题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 参考以下这颗二叉搜 ...
最新文章
- A.CPP (blur.CPP)如何调用B.CPP (zeros.cpp)中定义的方法
- 好惨!程序员修电脑遇到了人生滑铁卢 | 每日趣闻
- 通俗介绍拉普拉斯变换,傅里叶变换和z变换
- Word文档处理控件TX Text Control .NET for WPF
- 【OpenCV】目标检测
- 从 0 经验到成为全球第一模组生产商,日海智能的「非典型」物联网之路
- [转载] numpy.arctan, math.atan, math.atan2的区别
- Delphi中Format与FormatDateTime函数详解
- 谷歌android q 安装,谷歌修复了Pixel智能机安装Android Q Beta 4后循环重启的bug
- .arx 与此版本的 AutoCAD 不兼容。
- .net core 中使用httpclient下载文件
- 简述冯诺依曼体系结构计算机的工作原理。
- SAP中通过删除新建未记账成本要素期间的方式更改成本要素类别
- 使用Bugzilla,你肯定会遇到的坑。
- feignclient time out
- 京冀津城际铁路网规划大全
- 【简简单单来个spider小案例吧】获取emoji表情包
- PopupWindow 监听返回键
- 倒排索引、正排索引,以及ElasticSearch对倒排索引的优化方法
- dalao的背包九讲
热门文章
- MongoDB基本语法和操作入门
- matlab将txt数据分类,MATLAB读取txt文件,txt里面有字符串和数值两种类型
- 案例学习BlazeDS+Spring之十:Chat(
- eclipse安装Maven插件M2E
- pcm输出还是源码输出_LOL手游:上单英雄怎么选?还是推荐玩“狗头”,有肉又有输出...
- python excel插件_django使用插件下载excel的方法
- java第十版基础篇答案第九章_《Java语言程序设计》(基础篇原书第10版)第九章复习题答案...
- python学爬虫还是人工_本人初二生,学习Python爬虫,要不要继续深入学习啊?
- 牛客寒假算法基础训练营5
- PyTorch的hook及其在Grad-CAM中的应用