HDU3791二叉搜索树(浙大计算机研究生复试上机考试-2010年 )

本文主要是介绍HDU3791二叉搜索树(浙大计算机研究生复试上机考试-2010年 ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3791

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
const int N=15;
int a[N],b[N];
int cnt=0;
typedef struct tree{
int x;
tree *l,*r;
}tree;tree * create(int x)
{tree *root=(tree*)malloc(sizeof(tree));//动态申请内存root->x=x;root->l=NULL;root->r=NULL;return root;//返回指针
}
tree *Insert(tree *root,int x)
{if(root==NULL)//根节点为空,创造二叉树{root=create(x);}else{if(x>root->x)//右子树{root->r=Insert(root->r,x);}else{root->l=Insert(root->l,x);//左子树}}return root;
}
void Traversal(tree * root)
{if(root!=NULL)//节点不为空遍历,左子树和右子树{b[cnt++]=root->x;Traversal(root->l);Traversal(root->r);}
}
void destroy(tree *root)//销毁二叉树
{if(root){destroy(root->l);destroy(root->r);delete root;}
}
int main()
{int n;while(cin>>n,n){cnt=0;tree *root=NULL;char str[N];cin>>str;int len=strlen(str);for(int i=0;i<len;i++){root=Insert(root,str[i]-'0');}Traversal(root);for(int i=0;i<len;i++){a[i]=b[i];}while(n--){cnt=0;cin>>str;destroy(root);root=NULL;for(int i=0;i<len;i++){root=Insert(root,str[i]-'0');}Traversal(root);int i;for( i=0;i<len;i++){if(a[i]!=b[i]){cout<<"NO"<<endl;break;}}if(i>=len)cout<<"YES"<<endl;}}return 0;
}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------2018,9.19,思路差不多,重新写了一遍

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
const int N=30;
int a[N],b[N];
int cnt=0;
typedef struct node{
int x;
struct node * r=NULL;
struct node* l=NULL;
}Node;
Node * create(int x)
{Node *root=(Node*)malloc(sizeof(Node));root->x=x;root->l=NULL;root->r=NULL;return root;
}
Node * Insert(Node *root,int x)
{if(!root){root=create(x);}else{if(x>root->x)root->r=Insert(root->r,x);elseroot->l=Insert(root->l,x);}return root;
}void Travel(Node *root){if(root!=NULL){b[cnt++]=root->x;Travel(root->l);Travel(root->r);}}
int main()
{int n;string str;while(cin>>n,n){cnt=0;Node *root=NULL;cin>>str;int len=str.length();for(int i=0;i<len;i++){root=Insert(root,str[i]-'0');}Travel(root);for(int i=0;i<len;i++){a[i]=b[i];}while(n--){cnt=0;cin>>str;root=NULL;for(int i=0;i<len;i++){root=Insert(root,str[i]-'0');}Travel(root);int flag=1;for( int i=0;i<len;i++){if(a[i]!=b[i]){flag=0;cout<<"NO"<<endl;break;}}if(flag)cout<<"YES"<<endl;}}
}

 

这篇关于HDU3791二叉搜索树(浙大计算机研究生复试上机考试-2010年 )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/289584

相关文章

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

C# ComboBox下拉框实现搜索方式

《C#ComboBox下拉框实现搜索方式》文章介绍了如何在加载窗口时实现一个功能,并在ComboBox下拉框中添加键盘事件以实现搜索功能,由于数据不方便公开,作者表示理解并希望得到大家的指教... 目录C# ComboBox下拉框实现搜索步骤一步骤二步骤三总结C# ComboBox下拉框实现搜索步骤一这

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

hdu1240、hdu1253(三维搜索题)

1、从后往前输入,(x,y,z); 2、从下往上输入,(y , z, x); 3、从左往右输入,(z,x,y); hdu1240代码如下: #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#inc

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

hdu 2093 考试排名(sscanf)

模拟题。 直接从教程里拉解析。 因为表格里的数据格式不统一。有时候有"()",有时候又没有。而它也不会给我们提示。 这种情况下,就只能它它们统一看作字符串来处理了。现在就请出我们的主角sscanf()! sscanf 语法: #include int sscanf( const char *buffer, const char *format, ... ); 函数sscanf()和