二叉搜索树

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3420    Accepted Submission(s): 1496

Problem Description
判断两序列是否为同一二叉搜索树序列
 
Input
开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
 
Output
如果序列相同则输出YES,否则输出NO
 
Sample Input
2
567432
543267
576342
0
 
Sample Output
YES
NO
 
Source

搜索二叉数的定义:

二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树

不算什么难题,纯粹的数据结构,二叉树的建立与遍历,就是注意下应该按照搜索二叉树的定义进行建树,然后将建立出来的树比较一下对应位置的数值是否相等即可。

 #include<iostream>
#include<vector>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include<algorithm> using namespace std;
struct nodes
{
int date;
struct nodes *left,*right;
}*tree,*cur;
struct nodes *Creat(int x)
{
cur = (struct nodes *)malloc(sizeof(struct nodes));
cur->left = NULL;
cur->right = NULL;
cur->date = x;
return cur;
};
struct nodes *build(int x,struct nodes *root)
{
if(root == NULL)
{
root = Creat(x);
}
else
{
if(x <= root->date)
root->left = build(x,root->left);
else
root->right = build(x,root->right);
}
return root;
}
int cnt;
void lookthrough(struct nodes *root,int digit[])
{
if(root != NULL)
{
digit[cnt++] = root->date;
lookthrough(root->left,digit);
lookthrough(root->right,digit);
}
}
int main(void)
{
int n,i,j,a[],b[],l;
char str[];
while(scanf("%d",&n),n)
{
scanf("%s",str);
tree = Creat(str[]-'');
l = strlen(str);
for(i = ; i < l; i++)
{
tree = build(str[i]-'',tree);
}
cnt = ;
lookthrough(tree,a); for(i = ; i < n; i++)
{
tree = NULL;
scanf("%s",str);
tree = Creat(str[] - '');
for(j = ; j < l; j++)
{
tree = build(str[j]-'',tree);
}
cnt = ;
lookthrough(tree,b);
int ans = ;
for(j = ; j < l; j++)
if(a[j] != b[j])
{
ans = ;
break;
} if(ans == )
printf("NO\n");
else
printf("YES\n");
}
}
return ;
}

hdu 3791 二叉搜索树(数据结构)的更多相关文章

  1. HDU 3791 二叉搜索树 (数据结构与算法实验题 10.2 小明) BST

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3791 中文题不说题意. 建立完二叉搜索树后进行前序遍历或者后序遍历判断是否一样就可以了. 跟这次的作业第 ...

  2. hdu 3791:二叉搜索树(数据结构,二叉搜索树 BST)

    二叉搜索树 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submiss ...

  3. HDU 3791 二叉搜索树

    二叉搜索树 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  4. HDU 3791 二叉搜索树 题解

    Problem Description 推断两序列是否为同一二叉搜索树序列   Input 開始一个数n,(1<=n<=20) 表示有n个须要推断,n= 0 的时候输入结束. 接下去一行是 ...

  5. HDU 3791二叉搜索树解题(解题报告)

    1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...

  6. HDU 3179 二叉搜索树(树的建立)

    二叉搜索树 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  7. HDU - 3791 建立二叉搜索树

    题意: 给定一个序列,下面又有n个序列,判断这个序列和其他序列是否为同一个二叉树(同一序列数字各不相同) 思路: 首先讲将一个序列建立成二叉搜索树,然后将其他序列也建立二叉搜索树,两个树进行前序遍历, ...

  8. [数据结构]——二叉树(Binary Tree)、二叉搜索树(Binary Search Tree)及其衍生算法

    二叉树(Binary Tree)是最简单的树形数据结构,然而却十分精妙.其衍生出各种算法,以致于占据了数据结构的半壁江山.STL中大名顶顶的关联容器--集合(set).映射(map)便是使用二叉树实现 ...

  9. 【算法与数据结构】二叉搜索树的Java实现

    为了更加深入了解二叉搜索树,博主自己用Java写了个二叉搜索树,有兴趣的同学可以一起探讨探讨. 首先,二叉搜索树是啥?它有什么用呢? 二叉搜索树, 也称二叉排序树,它的每个节点的数据结构为1个父节点指 ...

随机推荐

  1. IO流11 --- 缓冲流(字符型)实现文本文件的复制 --- 技术搬运工(尚硅谷)

    方法一:读到指定字符数组 @Test public void test7(){ BufferedReader br = null; BufferedWriter bw = null; try { br ...

  2. PKU--1976 A Mini Locomotive (01背包)

    题目http://poj.org/problem?id=1976 分析:给n个数,求连续3段和的最大值. 这个题目的思考方式很像背包问题. dp[i][j]表示前i个数字,放在j段的最大值. 如果选了 ...

  3. windows server 文件夹和搜索选项被禁用了

    当我们需要调整 windows 文件夹相关的配置时,却发现“文件夹和搜索选项”被禁用了,下图是恢复正常的情况.被禁用时显示灰色,不能点击. 下面给出解决步骤: 打开“组策略”. 然后依次展开“用户配置 ...

  4. 1、mysql安装教程

    1.https://www.runoob.com/mysql/mysql-install.html   参考安装链接 Windows 上安装 MySQL Windows 上安装 MySQL 相对来说会 ...

  5. Linux 修改环境变量,重定向

    1.Linux下更改(当前用户)环境变量:在terminal下输入vim ~/.profile进入后,在最后一行添加PATH="-----------------:$PATH",添 ...

  6. Jenkins自动部署springboot项目

    说明: 该示例为在windows系统下自动化部署springboot 架构: springboot + github + gradle + jdk8 各种配置步骤及截图说明: 1.配置git,grad ...

  7. Java开源诊断工具 Arthas 发布v3.1.0

    Arthas 自2018年9月份上线以来「传送门」,已收获近万个star,感谢开发者们的认可.此次Arthas 3.1.0版本的发布,不仅带来大家投票出来的新LOGO,还带来强大的新功能和更好的易用性 ...

  8. mysql基础教程(一)-----概述、安装、查询

    概述 好处 •实现数据持久化 •使用完整的管理系统统一管理,易于查询 概念 DB 数据库(database):存储数据的“仓库”.它保存了一系列有组织的数据. DBMS 数据库管理系统(Databas ...

  9. 【JZOJ5179】【NOI2017模拟6.29】哈哈

    题意 给定一个长度为n的序列,你可以进行若干次操作: 选择一个区间,删掉,并获得Val[Len]的得分,Len为这个区间的长度: 其中这个区间满足: 1.相邻两个数差的绝对值为1 2.每个数都大于相邻 ...

  10. Maven入门指南:仓库

    1 . 仓库简介 没有 Maven 时,项目用到的 .jar 文件通常需要拷贝到 /lib 目录,项目多了,拷贝的文件副本就多了,占用磁盘空间,且难于管理.Maven 使用一个称之为仓库的目录,根据构 ...