二叉搜索树

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 3   Accepted Submission(s) : 3

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

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

浙大计算机研究生复试上机考试-2010年

 
  数据结构:树:二叉搜索树。  
  注意二叉树和二叉搜索树(BST)的概念是不同的,二叉搜索树是一种特殊的二叉树。它符合规律:所有节点的左孩子节点的值小于它根节点的值,右孩子节点的值大于根节点的值。就是小数放左边,大数放右边,来构成一棵二叉树。(还不明白的点击上面有下划线的深色链接)
  一开始没有搞明白两者的区别,以为二叉搜索树就是二叉树,这让我在构造二叉树的时候产生了疑惑,因为根据数据结构书上的描述,二叉树可以根据前序、中序、后序序列构造,这样产生的结果就是不唯一的。最后还是查找了一下二叉搜索树的概念才明白过来。根据它的规则就可以根据一个序列构成一个唯一的二叉搜索树了!而同一个二叉搜索树却可以有不同的序列来描述。这就产生了这道题的题意:给你两个不同的序列判断是否能构造出同一个二叉搜索树。
  思路:那么我们就可以根据二叉搜索树的生成规则先将一开始给你的序列生成一个二叉搜索树用tree[]存储起来,然后输入n个序列,每一个序列都生成一个二叉搜索树建立一个临时数组tree2[]存储,比较两个数组是否相同,相同输出“YES”,不同输出“NO”。
  本题代码:
 
 #include <iostream>
#include <string.h>
using namespace std;
int main()
{
char l1[];
int n;
while(cin>>n){
if(n==) break;
cin>>l1;
int tree[];
memset(tree,-,sizeof(tree));
for(int i=;l1[i];i++){ //构造二叉搜索树
int num = l1[i] - '';
int j = ;
while(tree[j]!=-){
if(num <= tree[j])
j = j*;
else
j = j* + ;
}
tree[j] = num;
}
while(n--){ //输入n个序列
char l2[];
cin>>l2;
int tree2[];
memset(tree2,-,sizeof(tree2));
for(int i=;l2[i];i++){ //构造比较二叉搜索树
int num = l2[i] - '';
int j = ;
while(tree2[j]!=-){
if(num <= tree2[j])
j = j*;
else
j = j* + ;
}
tree2[j] = num;
}
int i;
for(i=;i<=&&tree[i]==tree2[i];i++); //比较
if(i>)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}
return ;
}

Freecode : www.cnblogs.com/yym2013

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

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

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

  2. 基本数据结构 —— 二叉搜索树(C++实现)

    目录 什么是二叉搜索树 二叉搜索树如何储存数值 二叉搜索树的操作 插入一个数值 查询是否包含某个数值 删除某个数值 测试代码 参考资料 什么是二叉搜索树 二叉搜索树(英语:Binary Search ...

  3. 剑指offer二十六之二叉搜索树与双向链表

    一.题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 二.思路 对二叉搜索树中序遍历的结果即为排序的结果,在中序遍历的过程中,建 ...

  4. 剑指Offer(二十三):二叉搜索树的后序遍历序列

    剑指Offer(二十三):二叉搜索树的后序遍历序列 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...

  5. ML二:NNSearch数据结构--二叉树

    wiki百科:http://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91%E5%AD%A6%E4%B9%A0 opencv学习笔记--二杈决策树: ...

  6. 学习javascript数据结构(二)——链表

    前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...

  7. Lucene.Net 2.3.1开发介绍 —— 二、分词(二)

    原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(二) 1.2.分词的过程 1.2.1.分词器工作的过程 内置的分词器效果都不好,那怎么办?只能自己写了!在写之前当然是要先看看内置的分词 ...

  8. c#简单实现二维数组和二维数组列表List&lt;&gt;的转置

    刚看到网上一篇文章里用sql实现了行列转置.sql server 2005/2008只用一个pivot函数就可以实现sql server 2000很多行的复杂实现.提到转置,立刻想起还在求学阶段曾经做 ...

  9. Delphi Mercadopago支付【支持支持获取账户信息和余额、创建商店,商店查询、创建二维码、二维码查询、创建订单、订单查询、订单退款等功能】

    作者QQ:(648437169) 点击下载➨Delphi Mercadopago支付 [Delphi Mercadopago支付]支持 支持支持获取账户信息和余额.创建商店,商店查询.创建二维码.二维 ...

  10. asp.net生成店铺推广二维码,二维码中间加logo(源码)

    二维条码比一维条码记载数据量更多,二维码条码是一种高密度.高信息含量的便携式数据文件,是实现证件及卡片等大容量.高可靠性信息自动存储.携带并可用机器自动识读的理想手段.而且可以记载更复杂的数据,比如图 ...

随机推荐

  1. DBA 需要知道N种对数据库性能的监控SQL语句

    --DBA 需要知道N种对数据库性能的监控SQL语句 -- IO问题的SQL内部分析 下面的DMV查询可以来检查当前所有的等待累积值. Select wait_type, waiting_tasks_ ...

  2. 总结js(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作

    http://hi.baidu.com/yashua839/blog/item/131fdb2fe547ef221f3089af.html一.Iframe 篇 //&&&&am ...

  3. HTTP标头信息

    HTTP头信息头信息由“键:值”组成.它们描述客户端或者服务器的属性.被传输的资源以及应该实现连接. 四种不同类型的头标 通用头标:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联 ...

  4. quartus ii工程文件的分析

    .pof:通过AS口将程序固化到EPCS(flash)内. .sof:通过JTAG口下载到FPGA内部的SRAM里面. .JIC:通过JTAG口将程序固化到EPCS(flash)内.

  5. windows环境安装tensorflow

    本机环境win7,想要安装tensorflow,试了好久,才装好.官网才是王道. 注意:目前tensorflow 在 windows 环境中仅支持 python 3.5. *64,.所以python版 ...

  6. Mysql User表权限字段说明全介绍

    一:mysql权限表user字段详解: Select_priv.确定用户是否可以通过SELECT命令选择数据. Insert_priv.确定用户是否可以通过INSERT命令插入数据. Update_p ...

  7. jqury插件编写

    sae中短信验证码: ; (function($) { $(document).ready(function() { if (parent && parent.location.hre ...

  8. UIButton 按钮控件-IOS开发 (实例)

    转自:http://justcoding.iteye.com/blog/1467999 UIButton是一个标准的UIControl控件,所以如果你对UIControl不甚了解还是先看一下我的另一篇 ...

  9. MySQL 5.7.16 zip包配置

    截止2016/10/16 最新版本Mysql为5.7.16,之前写过一篇APMW搭建的文章(传送门:http://www.cnblogs.com/airoot/p/4131906.html)里面介绍的 ...

  10. js delete

    在开始之前,先让我们看一段代码 >>> var sum = function(a, b) {return a + b;} >>> var add = sum; &g ...