树4 是否同一棵二叉搜索树

04-树4 是否同一棵二叉搜索树(25 分) 04-树4 是否同一棵二叉搜索树(25 分) 给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。 输入格式: 输入包含若干组测试数据。每组数据的第1行给出两个正整数N(≤10)N... 阅读详情

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

输入格式:

输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最后L行,每行给出N个插入的元素,属于L个需要检查的序列。

简单起见,我们保证每个插入序列都是1到N的一个排列。当读到N为0时,标志输入结束,这组数据不要处理。

输出格式:

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

输入样例:

4 2
3 1 4 2
3 4 1 2
3 2 4 1
2 1
2 1
1 2
0

输出样例:

Yes
No
No

鸣谢青岛大学周强老师补充测试数据!

#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode *Tree;
struct TreeNode{
	int v;
	Tree Left,Right;
	int flag;
};

Tree MakeTree( int N);
Tree Insert( Tree T, int V);
Tree NewNode( int V);
int check ( Tree T, int V);
int Judge(Tree T, int N);
void ResetT(Tree T);
void FreeTree( Tree T);
				
int main(){
	int N,L,i;
	Tree T;

	scanf("%d",&N);
	while(N){
		scanf("%d",&L);
		T = MakeTree(N);
		for (i = 0; i < L; ++i)
		{
			if(Judge(T,N)) printf("Yes\n");
			else printf("No\n");
			ResetT(T);
		}
		FreeTree(T);
		scanf("%d",&N);
	}

	return 0;
}

Tree MakeTree( int N){
	Tree T;
	int i,V;

	scanf("%d",&V);
	T = NewNode(V);
	for (i = 1; i < N; ++i)
	{
		scanf("%d",&V);
		T = Insert(T,V);
	}
	return T;
}

Tree Insert( Tree T, int V){
	if (!T) T = NewNode(V);
	else{
		if(V > T->v)
			T->Right = Insert(T->Right, V);
		else 
			T->Left = Insert(T->Left, V);
	}
	return T;
}

Tree NewNode( int V){
	Tree T = (Tree)malloc(sizeof(struct TreeNode));
	T->v = V;
	T->Left = T->Right = NULL;
	T->flag = 0;
	return T;
}

int check ( Tree T, int V){
	if( T->flag){
		if(V < T->v) return check(T->Left, V);
		else if ( V > T->v) return check(T->Right, V);
		else return 0;
	}
	else{
		if( V==T->v ){
			T->flag = 1;
			return 1;
		}
		else return 0;
	}
}

int Judge(Tree T, int N){
	int i,V,flag = 0;  //flag 代表目前是否一致,1代表不一致

	scanf("%d",&V);
	if( V!=T->v) flag = 1;
	else T->flag = 1;

	for(i=1; i<N; i++){
		scanf("%d",&V);
		if((!flag) && (!check(T,V))) flag = 1;
	}
	if(flag) return 0;
	else return 1;
}

void ResetT(Tree T){
	if(T->Left) ResetT(T->Left);
	if(T->Right) ResetT(T->Right);
	T->flag = 0;
}

void FreeTree( Tree T){
	if(T->Left) FreeTree(T->Left);
	if(T->Right) FreeTree(T->Right);
	free(T);
}

最近状态很差,只是把PPT上的代码抄了一遍

04-树4 是否同一棵二叉搜索树 给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。 输入格式: 输入包含若干组测试数据。每组数据的第1行给出两个正整数N(≤10)和L,分别是每个序列插入元素的个数和需要检... 阅读详情

相关推荐

UE5入门第二周总结:基于蓝图的国际象棋的实现

在C++的学习中,这是一个入门级别的项目。我们的目标是灵活运用蓝图的特性和强大的可视化功能,做出这一入门级项目的同时,思考如何优化并改进算法,并尽可能的用面向对象的方法实现,用蓝图中的继承和多态简化编码过程。

YoungeYang的博客 1262

小白专场——是否同一棵二叉搜索树

给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。 输入格式: 输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数

拉风小宇的博客 3561

window下迁移SVN仓库到新的windows服务器

window下迁移SVN仓库到新的windows服务器

Bertram的博客 4692

04-树4 是否同一棵二叉搜索树 (25分)

04-树4 是否同一棵二叉搜索树   (25分) 给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。 输入格式: 输入包含若干组测试数据。每组数据的第1

sysusyf的博客 4150

用Seurat和ComplexHeatmap绘制单细胞marker基因热图:从数据处理到可视化全流程

本文详细介绍了使用Seurat和ComplexHeatmap绘制单细胞marker基因热图的全流程,涵盖从数据处理、基因筛选、平均表达矩阵计算到高级可视化与注释添加。重点解析了如何利用ComplexHeatmap生成发表级热图,并整合热词信息,解决单细胞数据可视化中的常见问题,提升科研图表质量。

weixin_29048775的博客 531

Data+AI新玩法:Text2SQL让数据查询变得如此简单!

你是不是也遇到过这种情况?明明手头有海量数据,却因为SQL这道“门槛”,让分析和决策变得复杂和拖沓。你可能想着:“要是我能直接用自然语言和数据库对话,那该多好!你不是一个人在这样想,Text2SQL技术正是为了帮你摆脱这一困境而诞生的。

Ase5gqe的博客 867

04-树4 是否同一棵二叉搜索树(PTA-慕课)

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

计算机科学与技术专业学生的成长之路 640

k8s中如何使用gpu、gpu资源讲解、nvidia gpu驱动安装

gpu资源也是服务器中常见的一种资源,gpu即显卡,一般用在人工智能、图文识别、大模型等领域,其中nvidia gpu是nvidia公司生产的nvidia类型的显卡,amd gpu则是adm公司生产的amd类型gpu。企业中服务器最常见的就是英伟达gpu服务器了。本篇也主要讲解英伟达驱动相关的知识。

MssGuo的博客 1万+

算法 树4 是否同一棵二叉搜索树

题目:给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。 输入格式: 输入包含若干组测试数据。每组数据的第1行给出两个正整数N(≤10)和L,分别是每个序列插入元素的个数和...

Dezeming的博客 6893

Jaspersoft Studio 6.20.0 免注册安装指南(附下载链接)

本文提供了Jaspersoft Studio 6.20.0社区版的免注册安装详细指南。文章介绍了绕过官网注册获取安装包的多种可靠途径,并逐步详解了从启动安装器到首次运行的全过程,帮助用户快速完成安装与基础配置,高效开启报表设计工作。

mars5的博客 1697

[QMT量化交易小白入门]-七、可转债双低策略Python代码详解与实战

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。

木头大左的博客 3892

【PTA】04-树4 是否同一棵二叉搜索树

给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。 输入格式: 输入包含若干组测试数据。每组数据的第1行给出两个正整数N(≤)和L,分别是每个序列插入元素的个数和需要检查的...

qq_39711485的博客 253

TIA博途中通过UDT实现IO地址映射到DB块中的具体方法

TIA博途中通过UDT实现IO地址映射到DB块中的具体方法

Robot_PLC_HMI_Automation 1万+

PTA-04-树4 是否同一棵二叉搜索树

求解思路 一:建立两棵树 二:不建树的判别方法 树T{3,1,2,4}和{3,4,1,2} 分成比根节点小的和比根节点大的 按照原来的顺序 第一组 {1 2 }3 {4} 第二组 {1 2 }3 {4} 三:建立一颗树 再判别序列 方法:在树T中按照顺序搜索序列 3 2 4 1的每个数 如果每次搜素所经过的结点在前面均为出现过 则一致 否则(某次搜素中遇到前面未出现的结点) 则不一致 ...

Sukihasimoto的博客 305

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

2.4 是否同一棵二叉搜索树(树,c)

是否同一棵二叉搜索树是否同一棵二叉搜索树题意理解输入样例:输出样例:求解思路搜索树表示程序框架的搭建如何建搜索树搜索树是否一样的判别查找代码清除标记与释放空间代码 PTA原题链接 是否同一棵二叉搜索树 题意理解 把一个序列插到一棵二叉搜索树里去,按顺序把每个数逐个插入到二叉搜索树里去 输入样例: 4 2 3 1 4 2 3 4 1 2 3 2 4 1 2 1 2 1 1 2 0 输出样例: Yes No No 第一行两个整数,4是这个插入的序列的数的个数,也就是二叉搜索树的结点个数,

吃鱼从来不吐刺的博客 1379

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 树3 Tree Traversals Again
下一篇: 树5 Root of AVL Tree
DedicateToAI
博客等级 码龄9年 6粉丝 90原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值