L2-004. 这是二叉搜索树吗?

L2-004 这是二叉搜索树吗? 题目链接 注释较全_(:з」∠)_ #include<bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; typedef long long ll; const int maxn = 1024; // 前序遍历数组 int pre[maxn]; // 是否开始判断是否为二叉搜索树的镜像的开关变量 bool j... 阅读详情

一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,

其左子树中所有结点的键值小于该结点的键值;
其右子树中所有结点的键值大于等于该结点的键值;
其左右子树都是二叉搜索树。
所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。

给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。

输入格式:
输入的第一行给出正整数 N(≤1000)。随后一行给出 N 个整数键值,其间以空格分隔。

输出格式:
如果输入序列是对一棵二叉搜索树或其镜像进行前序遍历的结果,则首先在一行中输出 YES ,然后在下一行输出该树后序遍历的结果。数字间有 1 个空格,一行的首尾不得有多余空格。若答案是否,则输出 NO。

输入样例 1:
7
8 6 5 7 10 8 11
输出样例 1:
YES
5 7 6 8 11 10 8
输入样例 2:
7
8 10 11 8 6 7 5
输出样例 2:
YES
11 8 10 7 5 6 8
输入样例 3:
7
8 6 8 5 10 9 11
输出样例 3:
NO
题解:这个题目因为节点的值可以相等,如果用节点的值建树的话会有死循环,所以用节点的下标建树,然后前序遍历二叉树看等不等于输入的那个样例,如果不等于,再判断一下是否为二叉树的镜像,如果哪一种符合,就输出哪一种的后序遍历结果。

#include<iostream>
#include<algorithm>
using namespace std;
int a[10005],b[10005],b2[10005],c[10005];
int left1[10005];
int right1[10005];
int p;
int len=0,len1=0,len2=0;
void createtree(int n)//建二叉树 。 
{
	p=1;
	for(int i=2;i<=n;i++)
	{
		int t=p;
		while(t!=0)
		{
			if(a[i]<a[t])
			{
				if(left1[t]==0)
				{
					left1[t]=i;
					break;
				}
					t=left1[t];
			}
			else
			{
				if(right1[t]==0)
				{
					right1[t]=i;
					break;
				}
				t=right1[t];
			}
			
		}
		
	}
}
void dfs(int x)//前序遍历二叉树 
{
	if(x!=0)
	{
	 b[len]=x;
	len++;
	//cout<<x<<endl;
	dfs(left1[x]);
	dfs(right1[x]);
	}
	return ;
}
void check(int x) //判断是否为二叉搜索树的镜像 
{
		if(x!=0)
	{
	 b2[len2]=x;
	len2++;
	//cout<<x<<endl;
	check(right1[x]);
	check(left1[x]);
	}
	return ;
}
void dfs1(int x)//二叉搜索树的后序遍历 
{
	if(x==0)
	{
		return ;
	}
	
	dfs1(left1[x]);
	dfs1(right1[x]);	 
	c[len1]=x;
	len1++;
}
void dfs2(int x)//二叉搜索树镜像的后序遍历 
{
	if(x==0)
	{
		return ;
	}
	dfs2(right1[x]);
	dfs2(left1[x]); 
	c[len1]=x;
	len1++;
}
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	 }	
	 createtree(n);	
	 int flag=1;
	 dfs(1);
	for(int i=1;i<=n;i++)
	{
		if(a[i]!=a[b[i-1]])
		{
			flag=0;
			break;
		}
	}
	if(flag==0)
	{
		flag=2;
		check(1);
		for(int i=1;i<=n;i++)
	{
		if(a[i]!=a[b2[i-1]])
		{
			flag=0;
			break;
		}
	}
	}
	if(flag)
	{	
		cout<<"YES"<<endl;
		if(flag==1)
		{
		dfs1(1);
		}
		else
		{
		dfs2(1);
		}
		for(int i=0;i<len1-1;i++)
		{
			cout<<a[c[i]]<<" ";
		}
		cout<<a[c[len1-1]]<<endl;
	 } 
	 else
	 cout<<"NO"<<endl;
 	return 0;
}
NMS非极大值抑制算法原理 NMS非极大值抑制算法 阅读详情

相关推荐

深度残差网络的无人机多目标识别

深度残差网络的无人机多目标识别 人工智能技术与咨询 来源:《图学学报》。作者翟进有等 摘要:传统目标识别算法中,经典的区域建议网络(RPN)在提取目标候选区域时计算量大,时间复杂度较高,因此提出一种级联区域建议网络(CRPN)的搜索模式对其进行改善。此外,深层次的卷积神经网络训练中易产生退化现象,而引入残差学习的深度残差网络(ResNet),能够有效抑制该现象。对多种不同深度以及不同参数的网络模型进行研究,将两层残差学习模块与三层残差学习模块结合使用,设计出一种占用内存更小、时间复杂度更低的新型多捷.

m0_62870606的博客 3110

PTA-L2-004 这是二叉搜索树吗? (25分)

PTA-L2-004 这是二叉搜索树吗? (25分) 传送门 这道题树的问题。 给出了前序遍历,问我们通过这个判断这个树是不是二叉搜索树的前序遍历或者这棵树镜像的前序遍历。是的话输出其后序遍历,不是的话输出“NO" 根据二叉搜索树及前序遍历的特点,我们可以得知一个前序遍历中,第一个肯定是根节点,那么我们就要找出左子树和右子树的分界位置,找的方法就是根据二叉搜索树的特点,左子树都小于根节点,右子树都大于等于根节点,用指针过来索引。 并且这两个指针的差满足等于1. 因为是分界线的位置,不可能这两个指针的中间还有

qq_44624316的博客 1470

OpenWrt kmod内核不兼容?手把手教你用脚本强制安装驱动模块(附国内镜像源)

本文详细解决了OpenWrt kmod内核不兼容问题,提供智能脚本强制安装驱动模块的方法,并附有国内镜像源加速配置。通过自动化脚本修改内核MD5校验值,确保kmod包正常安装,同时推荐多个国内镜像源以提升下载速度。

weixin_42549451的博客 540

L2-004 这是二叉搜索树吗?(二叉树)

题目连接 https://pintia.cn/problem-sets/994805046380707840/problems/994805070971912192 思路 这道题我们要从二叉搜索树的特性出发,其实也就是题目中提到的: 其左子树中所有结点的键值小于该结点的键值 其右子树中所有结点的键值大于等于该结点的键值 其左右子树都是二叉搜索树 又因为这颗二叉树可能镜像翻转,于是我们需要判断镜像和非镜像是否为二叉搜索树,也就是至多两次判断,其实两次都是几乎一样的,因为左子树的所有节点的最大值是小于右子树

小谢的博客 5666

AI气象预报:数值模式融合与短临预警的工程实践

气象预报正经历从物理推演到数据驱动的认知范式转变。AI气象预报并非替代传统数值模式,而是通过数值模式融合弥补其在参数化误差、初值敏感性和计算效率上的固有瓶颈。其技术价值在于提升短临预警时效性与空间精度,支撑航空调度、电力调控、防洪应急等关键场景。实践中需兼顾物理一致性、可解释性与业务系统兼容性,避免纯黑箱建模带来的外推失效与不确定性缺失风险。本文聚焦AI作为超分辨率引擎、误差矫正器和短临加速器的三类落地路径,解析HEALPix投影、多尺度图建模、轻量级U-Net等核心适配方法。

weixin_28221501的博客 298

从Datasheet到可用的Verilog模块:手把手教你为N25Q128 SPI Flash写状态机驱动

本文详细介绍了如何从Datasheet到实现可用的Verilog模块,手把手教你为N25Q128 SPI Flash编写状态机驱动。文章涵盖SPI Flash的核心工作机制、数据手册解析方法、Verilog状态机设计实践以及调试与性能优化技巧,特别适合FPGA开发者和硬件设计工程师参考。

weixin_30596023的博客 176

L2-004. 这是二叉搜索树吗?-PAT团体程序设计天梯赛GPLT

L2-004. 这是二叉搜索树吗? 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值; 其右子树中所有结点的键值大于等于该结点的键值; 其左右子树都是二叉搜索树。 所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。 给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前

柳婼 の blog 2660

深入探究贝叶斯网络(Bayesian Network):从基础原理到实际应用

贝叶斯网络,也称为信念网络或有向无环图模型,是一种概率图模型。它使用有向无环图(DAG)来表示随机变量之间的条件依赖关系。每个节点代表一个随机变量,边表示变量之间的条件依赖关系。贝叶斯网络作为一种强大的工具,通过结合概率论和图论,为复杂系统建模和推理提供了有效手段。无论是在医学诊断、故障检测还是自然语言处理等领域,它都展示了巨大的潜力。然而,其计算复杂度高、结构学习困难等挑战也需要我们在实际应用中不断优化算法和技术。希望通过本文,你能对贝叶斯网络有更深入的理解,并能够在实际项目中灵活应用这一强大工具。

qq_28791753的博客 5968

团体程序设计天梯赛L2-004 这是二叉搜索树吗?(数据结构)

思路:对于一颗合法的二叉搜索树,那么即满足对于区间[l,r],存在一个点i,a[l] #include #include #include using namespace std; const int maxn = 1005; int a[maxn]; int check1(int l,int r) { if(l>=r) return 1; int key = r; for(

围巾的ACM博客 3102

干掉百度Apollo的安装!(Apollo10.0的源码安装)

1、在Apollo10.0的安装手册中,没有再详细给出源码安装的步骤,官方更推荐的是包管理安装,但实际上Apollo10.0仍然是可以进行源码安装的。2、使用源码安装Apollo10.0,比Apollo9.0的源码安装问题要少,整个安装过程更顺畅。3、从Apollo 10.0开始,源码安装和包管理安装采用同一套编译工具,也就是aem。之前只有在进行包管理安装的时候我们才需要安装aem,现在进行源码安装也需要安装aem。

qq_40033030的博客 892

rk3576 点亮 LCD(mipi)

瑞芯微 RK3576 是一款面向中高端 AIoT 市场的 SoC,其 MIPI DSI (Display Serial Interface) 接口在性能和灵活性上相比前代(如 RK3399/RK3568)有显著提升,特别是在物理层协议的支持上更加现代化。相比RK3399 RK3568的mipi 接口少了 8lane,但是RK3576 MIPI DSI 增加更低功耗的 C-PHY。

weixin_35723192的博客 364

PTA L2-004 这是二叉搜索树吗?(Java)

题目描述: L2-004 这是二叉搜索树吗? (25 分) 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值; 其右子树中所有结点的键值大于等于该结点的键值; 其左右子树都是二叉搜索树。 所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。 给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进...

lyx1157013403的博客 698

含分布式电源的配电网三段式电流保护影响仿真研究

文章摘要 本文研究了分布式电源(DG)接入对配电网三段式电流保护的影响。通过在Matlab/Simulink平台搭建含同步发电机型DG的10kV配电网模型,设计了基于傅里叶算法的三段式电流保护模块(I段瞬时速断、II段限时速断、III段定时限过流)。研究分析了不同DG接入位置、容量及故障点对保护系统的影响机理。仿真结果表明,DG接入会改变故障电流特性,可能导致三种典型问题:保护范围扩大引起误动、保护灵敏度下降导致拒动,以及保护选择性丧失。该研究为含DG配电网的保护配置与整定提供了理论依据和仿真参考,对保障分

huanghm88的专栏 268

PTA天梯 L2-004 这是二叉搜索树吗?

按照题目描述,给出的是正常的二叉树的前序遍历或者镜像后的二叉树的前序遍历,所以我们只需要根据给出的前序遍历序列来确定后序遍历序列就可以了,并不需要建一棵树。给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。而对于镜像的二叉树,就相当于正常二叉树的右子树和左子树的性质发生了调换,仅仅需要改变一下。所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。搜索的条件就可以,注意后序遍历顺序当然还是和正常的二叉树一样先左后右。,然后按照输入的序列进行搜索。

2302_79440616的博客 1021

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

L2-004 这是二叉搜索树吗? (25分)

L2-004 这是二叉搜索树吗? (25分) 团体程序设计天梯赛-练习集 问题: 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值; 其右子树中所有结点的键值大于等于该结点的键值; 其左右子树都是二叉搜索树。 所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。 给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。 输入格式: 输入的第一行给出正整数 N(≤1000)。随后一行给

m0_49337600的博客 452

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

天梯赛L2-004 这是二叉搜索树吗?

完全正确!根 → 左 → 右左 → 右 → 根它们结构完全对称,只是根的位置不同最先处理根最后处理根神级理解!你说:划分左右 → 递归到底 → 回溯时,当前 l 正好是根回溯的过程天然就是后序遍历这句话太对了!

Ruially的博客 518

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

L2-004 这是二叉搜索树吗

L2-004 这是二叉搜索树吗? (25 分) 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值; 其右子树中所有结点的键值大于等于该结点的键值; 其左右子树都是二叉搜索树。 所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。 给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的...

roMxx 624

L2-004 这是二叉搜索树吗? (25分)团体设计天体赛

二叉搜索树模板题 #include <bits/stdc++.h> using namespace std; typedef struct Node { int v; Node *lchild; Node *rchild; } Node, *Tree; //存放遍历结果 vector<int> ori, pre, mirpre, post, mirpost; Node *newNode(int x) { Node *node = (Node *)mal

qq_45455670的博客 152

L2-004 这是二叉搜索树吗?(Java)

天梯赛练习题

Gracener的博客 1369
上一篇: [Error] 'to_string' was not declared in this scope
下一篇: 此连接对指定数据库进行筛选,新创建数据库或许不可见
accepted_accepted
博客等级 码龄8年 8粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值