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

一条浙大考研上机题目。考二叉树构建。

直接使用静态数组过了,由于数据不大。

#include <stdio.h>
#include <iostream>
#include <string>
using std::string;
using std::cin; const int SIZE = (1<<9)+1;
char Tree[SIZE];
char secTree[SIZE];
string root, child; void constrctTree(char T[], char a, int node = 0)
{
if (T[node] == 'b')
{
T[node] = a;
return ;
}
if (a < T[node]) constrctTree(T, a, node<<1|1);
else constrctTree(T, a, (node+1)<<1);
} int main()
{
int n;
secTree[1<<9] = '\0';
Tree[1<<9] = '\0';
while (scanf("%d", &n) && n != 0)
{
for (int i = 0; i < 1<<9; i++) Tree[i] = 'b';
cin>>root;
for (int i = 0; i < (int)root.size(); i++)
{
constrctTree(Tree, root[i]);
}
for (int i = 0; i < n; i++)
{
cin>>child;
if (root.size() != child.size()) puts("NO");
else
{
for (int j = 0; j < 1<<9; j++) secTree[j] = 'b';
for (int i = 0; i < (int)child.size(); i++)
{
constrctTree(secTree, child[i]);
}
if (strcmp(Tree, secTree) == 0) puts("YES");
else puts("NO");
}
}
}
return 0;
}

HDU 3791 二叉搜索树 题解的更多相关文章

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

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

  2. HDU 3791 二叉搜索树

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

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

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

  4. hdu 3791 二叉搜索树(数据结构)

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

  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. PAT L3-010 是否完全二叉搜索树(二叉搜索树)

    将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. 输入格式: 输入第一行给出一个不超过20的正整数 ...

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

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

  9. hdu 3999 The order of a Tree (二叉搜索树)

    /****************************************************************** 题目: The order of a Tree(hdu 3999 ...

随机推荐

  1. Design Pattern —— Singleton

    Design Pattern —— Singleton   强力推荐枚举和类级内部类方式实现单例模式 单例模式是开发中非常常用的一种模式,简单的说,我们希望一个类永远都只有一个对象. 主要有两个用途: ...

  2. C#部分方法定义

    C#部分方法定义 部分类也可以定义部分方法.部分方法在部分类中定义,但没有方法体,在另一个部分类中执行.在这两个部分类中,都要使用partial关键字. public partial class My ...

  3. Asp.net 导航条【1】

    PHP比较成熟的开放的源代码比较多,比方说PrestaShop,比方说Discuz!...... 虽然语言不同,但基本原理是一样的,有时间的话读一读,对学习ASP.NET应该是非常有好处的(唉,什么时 ...

  4. Active控件有关问题

    ActiveX 控件是允许网站提供视频等内容的网站. 当你浏览 Web 时,它们允许你使用工具栏.股票代号.视频和其它内容. 但是,这些程序有时可能出现问题,或者向你提供不需要的内容. 在某些情况下, ...

  5. macbook Android开发环境搭建,真机调试

    买了一台MacBook,本以为可以鼓捣一下iOS开发之类的,可惜导师要我做Android开发.无奈开始了在MacBook上开发Android的工作. 从开始配置环境到应用成功在真机上运行,也是曲曲折折 ...

  6. mysql的limit经典用法及优化

    用法一   SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiserid='59') LIMIT 2 OFFSET 1;   比如这个 ...

  7. JavaScript-学习一全局变量

    因为局部变量只作用于函数内,所以不同的函数可以使用相同名称的变量. 局部变量在函数开始执行时创建,函数执行完后局部变量会自动销 不限制位置的 JavaScript 变量生命周期在它声明时初始化. 局部 ...

  8. sublime3 插件pylinter的安装

    1.首先sublime需要安装package control,之后安装pylinter插件,并进行简单的属性配置(网上教程很多,略) 2.之后是pylint_path的配置,我参照网上的配置失败,su ...

  9. JS 操作Dom节点之CURD

    许多优秀的Javascript库,已经封装好了丰富的Dom操作函数,这可以加快项目开发效率.但是对于非常注重网页性能的项目来说,使用Dom的原生操作方法还是必要的. 1. 查找节点 document. ...

  10. A记录、CNAME记录、MX记录

    A 记录(Address)  (一句话:用来指定域名和服务器IP的对应关系) 是用来指定主机名(或域名)对应的IP地址记录.用户可以将该域名下的网站服务器指向到自己的web server上.同时也可以 ...