数据结构实验之查找一:二叉排序树_Key_MQL的博客-程序员宅基地

技术标签: SDUT C语言 数据结构  二叉树  acm  数据结构  

Problem Description

对应给定的一个序列可以唯一确定一棵二叉排序树。然而,一棵给定的二叉排序树却可以由多种不同的序列得到。例如分别按照序列{3,1,4}和{3,4,1}插入初始为空的二叉排序树,都得到一样的结果。你的任务书对于输入的各种序列,判断它们是否能生成一样的二叉排序树。

Input

输入包含若干组测试数据。每组数据的第1行给出两个正整数N (n < = 10)和L,分别是输入序列的元素个数和需要比较的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列生成一颗二叉排序树。随后L行,每行给出N个元素,属于L个需要检查的序列。
简单起见,我们保证每个插入序列都是1到N的一个排列。当读到N为0时,标志输入结束,这组数据不要处理。

Output

对每一组需要检查的序列,如果其生成的二叉排序树跟初始序列生成的二叉排序树一样,则输出"Yes",否则输出"No"。

Example Input
4 2
3 1 4 2
3 4 1 2
3 2 4 1
2 1
2 1
1 2
0
Example Output
Yes
No
No

Hint

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct hh
{
    int data;
    struct hh *l;
    struct hh *r;
};
int k;
struct hh *creat(struct hh *p,int x)//生成排序二叉树的算法
{
    if(p==NULL)
    {
        p=(struct hh *)malloc(sizeof(struct hh));
        p->data=x;
        p->l=NULL;
        p->r=NULL;
    }
    else
    {
        if(x<p->data)
            p->l=creat(p->l,x);
        else
            p->r=creat(p->r,x);
    }
    return p;
}
void panduan(struct hh *p,struct hh *t)//判断两个二叉树是否一样的具体算法
{
    if(p!=NULL&&t!=NULL&&p->data==t->data)
    {
        panduan(p->l,t->l);
        panduan(p->r,t->r);
    }
    else if(p==NULL&&t==NULL);
    else
    {
        k=0;
        printf("No\n");
    }
}
int main()
{
    int n,m,i,j,x;
    struct hh *p,*t;//p为初始二叉树,t为待判断二叉树
    char a[20],d[20];
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        if(n!=0)
        {
            p=NULL;
            for(i=0;i<n;i++)//生成初始二叉树
            {
                scanf("%d",&x);
                p=creat(p,x);
            }
            for(j=0;j<m;j++)
            {
                k=1;
                t=NULL;
                for(i=0;i<n;i++)//生成待判断二叉树
                {
                    scanf("%d",&x);
                    t=creat(t,x);
                }
                panduan(p,t);//判断两个二叉树是否一样
                if(k==1)
                printf("Yes\n");
            }
        }
    }
    return 0;
}


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Key_MQL/article/details/53560896

智能推荐

vivado bit 烧写到flash_dragon_cdut的博客-程序员宅基地

将代码烧录到到 flash 步骤1)点击 bitstream setting ,将 bin_file 勾上,点击 OK。 2)点击 generate bitstream ,生成 bit 文件和 bin 文件3)点击 open hardware manager,连接板子。4)选中芯片,右键如下操作。

Java网络请求遇到的一些坑_java 调接口httpurlconnection赋值不生效_水花DX的博客-程序员宅基地

使用HttpURLConncetion网络请求遇到的一些坑 经常使用HttpURLConncetion进行网络请求,也遇到了一些坑,这里总结一下,方便以后查阅。以后遇到了新的坑,也会在后面进行补充。HttpUrlConnection请求不会发生使用HttpUrlConnection进行网络请求时,如果不调用HttpUrlConnection的getInputStream(),ge..._java 调接口httpurlconnection赋值不生效

Rational Rose免费下载 安装教程多图详解(win10版)_rational rose下载_宾宾叔叔的博客-程序员宅基地

以前看过一些文章,说是要把时间调到2020-01-06之前,不然的话,会出现问题,那么首先的话,我们先调一下电脑的时间1.按一下键盘上的Windows键,然后键盘输入设置,点击进去2.选择时间和语言3.取消自动时间,更改时间为2020-01-06之前的时间4.改好之后,点击更改即可下面开启安装之路 首先准备好软件的安装包rational Rose 软件包传送门提取码:lxfn虚拟光驱文件传送门提取码:fft1开始安装软件的安装包的格式为bin,这说明我们需要使用虚拟光驱来安装_rational rose下载

poj1753(暴搜+位运算)_少点多些的博客-程序员宅基地

Flip GameTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 33180 Accepted: 14513DescriptionFlip game is played on a rectangular 4x4 field with two-sided p

上传图片到阿里云OSS_weixin_30533797的博客-程序员宅基地

在下面的代码之前,需要知道bucket、accessKeyId、accessKeySecret,以及域名endpoint;pom.xml:<!-- 阿里云存储 --><dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-..._clientbuilderconfiguration conf = new clientbuilderconfiguration();

Freemarker全局变量_freemarker 全局变量_聆听风的心声0的博客-程序员宅基地

对于网站中的静态资源,在发布后往往都不是存储在网站根目录中,那么在HTML中引用静态资源的时候就要用到全路径,可以利用freemarker定义几个全局变量,分别表示css,img,js等的根路径在springMvc的配置文件中如下配置 _freemarker 全局变量

随便推点

springboot 整合 Dubbo 与 Feign (无注册中心)_feignclient不走注册中心_Sonder、Aiden的博客-程序员宅基地

注:文章皆为个人纪录,可用性请以最终结果为准,若有错还请大佬们指出,谢谢!一,SpringBoot 整合 Dubbo1.1 服务提供者1.1.1 核心依赖<!-- dubbo依赖 --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter&_feignclient不走注册中心

如何学习C语言?就是这么简单粗暴!_c语言怎么好学_C语言半兮的博客-程序员宅基地

C语言是面向过程的,而C++是面向对象的。C和C++的区别:C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在..._c语言怎么好学

前端小白001:关于uni-app的v-show在微信小程序上的一些bug及解决思路_小程序页面v-show卡顿_侠宁的博客-程序员宅基地

关于uni-app的v-show在微信小程序上的一些bug及解决思路今天遇到v-show在微信小程序不能及时触发的问题,代码如下: <div v-show="list.length > 0">显示数据</div>这段代码很常见,但在小程序上不能及时触发就让人很烦恼,不过我额外添加一个属性触发v-show就行了,代码如下://watch监听watch{ list(n){ this.show = n.length > 0 }},data(){ sho_小程序页面v-show卡顿

Nginx 实现OCSP Stapling_vTrus2020的博客-程序员宅基地

什么是OCSP StaplingOCSP的全称是Online Certificate Status Protocol,在线证书状态协议。它是一个用于检查证书状态的协议,客户端使用此协议来检查证书是否被撤销。而OCSP Stapling,是指服务端主动获取 OCSP 查询结果并随着握手协商时一起发送给客户端,从而让客户端免去自己验证的过程,提高 TLS 握手效率。Web容器版本支持Nginx version 1.3.7以上支持Apache Server 2.3.3+ 以上支持自动OCSP Stapl_ocsp stapling

2019-PINN-A deep learning framework for solving forward and ... nonlinear PDEs_非线性参数识别 pinn_辣克糖LuckSugar的博客-程序员宅基地

2019-Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equationsM.Raissia, P.Perdikarisb,∗, G.E.Karniadakisaabstract我们引入物理信息神经网络——神经网络,这些神经网络经过训练,可以解决受监督的学习任务,_非线性参数识别 pinn

疯壳MSP430实验教程2数码管实验_msp430数码管静态显示_fengkesz的博客-程序员宅基地

目录第一节 数码管介绍 3第二节 GPIO基础寄存器介绍 4第三节 实验 6第四节 实验现象 8官网地址:http://www.fengke.club购买链接:http://shop115904315.taobao.com/官方QQ群:457586268(任何技术问题可加群咨询@退化程序猿 或免费领取资料)第一节 数码管介绍数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元,也就是多一个_msp430数码管静态显示

推荐文章

热门文章

相关标签