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... 阅读详情

L2-004. 这是二叉搜索树吗?
一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,

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

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

输入格式:

输入的第一行给出正整数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

解题思路:
使用晴神书上的解题方法,很好理解。
1.根据输入顺序,构建二叉搜索树。
2.用前序、镜像前序、后序、镜像后序,来分别遍历这棵BST,得到遍历序列。借用vector数组的性质,可以比较整个数组。
3.比较遍历得到的数组,按照题目要求的逻辑来判断并输出。

#include<cstdio> 
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn=1e3+10;

struct node{
    int data;
    node *lchild,*rchild;
};
void insert(node* &root,int x){
    if(root==NULL){
        root=new node;
        root->data =x;
        root->lchild =root->rchild =NULL;
        return ;
    }else if(x <root->data ){
        insert(root->lchild ,x);
    }else{
        insert(root->rchild ,x);
    }
}
vector<int>ori,pre,mpre,post,mpost;
//先序 
void preorder(node *root,vector<int>&vi){
    if(root==NULL) return;
    vi.push_back(root->data );
    preorder(root->lchild,vi );
    preorder(root->rchild ,vi);
}
//镜像先序 
void mpreorder(node *root,vector<int>&vi){
    if(root==NULL) return;
    vi.push_back(root->data );
    mpreorder(root->rchild,vi );
    mpreorder(root->lchild ,vi);
}
//后序
void postorder(node *root,vector<int>&vi) {
    if(root==NULL) return ;
    postorder(root->lchild ,vi);
    postorder(root->rchild ,vi);
    vi.push_back(root->data );
}
//镜像后序
void mpostorder(node *root,vector<int>&vi) {
    if(root==NULL) return ;
    mpostorder(root->rchild ,vi);
    mpostorder(root->lchild ,vi);
    vi.push_back(root->data );
}
int main(){
    int n,x;
    node *root=NULL;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&x);
        ori.push_back(x) ;
        insert(root,x);
    }
    preorder(root,pre);
    mpreorder(root,mpre);
    postorder(root,post);
    mpostorder(root,mpost);
    if(ori==pre){
        printf("YES\n");
        for(int i=0;i<post.size() ;i++){
            printf("%d",post[i]);
            if(i<post.size() -1) printf(" ");
            else printf("\n");
        }
    }else if(ori==mpre){
        printf("YES\n");
        for(int i=0;i<mpost.size() ;i++){
            printf("%d",mpost[i]);
            if(i<mpost.size() -1) printf(" ");
            else printf("\n");
        }
    }else{
        printf("NO\n");
    }
    return 0;
}
从零组装一台会‘看’的无人机:手把手教你配置NUC机载电脑与D435深度相机(环境搭建篇) 本文详细介绍了如何从零开始组装一台具备视觉能力的智能无人机,重点讲解了NUC机载电脑与D435深度相机的配置方法。通过Ubuntu系统安装、ROS环境搭建、深度学习框架配置等步骤,帮助开发者实现无人机的自主避障和目标跟踪功能。文章还提供了性能优化和常见问题解决方案,是无人机视觉系统开发的实用指南。 阅读详情

相关推荐

SpyGlass CDC实战:如何用sgdc约束文件解决跨时钟域报错(附常见错误排查)

本文详细介绍了如何使用SpyGlass CDC工具编写sgdc约束文件解决跨时钟域(CDC)报错问题。从基础语法到实战案例,涵盖时钟声明、复位约束、路径豁免等关键技巧,特别针对SPI断续时钟等特殊场景提供解决方案,并附常见错误排查指南,帮助工程师高效完成CDC验证。

weixin_28744423的博客 626

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

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

qq_44624316的博客 1470

Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法)

使用Python、Selenium实现问卷星自动填写,内含适配个人问卷的方法。

DaenCode的博客 3837

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

(程序设计天梯赛)L2-004 这是二叉搜索树吗? (25 分) 题目链接 L2-004 这是二叉搜索树吗? (25 分) 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值; 其右子树中所有结点的键值大于等于该结点的键值; 其左右子树都是二叉...

xia_feixiang的博客 510

[数字电路]用与非门实现BCD译码器驱动数码管

Hello,大家好。这里是xdd_core,好久不见。今天来和大家聊聊大一数字电路课程的一个课设。# Key word:BCD Decoder,Proteus8.x,NAND Gate,Digital Circuit# 流程:Proteus8.x仿真电路并绘制PCB导出Gerber文件打样,最终实物验证。# 以下为我对这个课设的report(里面对整个设计做了详细介绍,并设计了完整的验证电路) 感谢观看,仅供参考,未经作者允许,禁止转载/抄袭,本文已上传至数据库,查重必挂QAQ BCD to 7-Segme

xddcore的博客 6012

工程制图习题集张大庆课后习题答案解析

所以,我想向大家求助,希望能得到一些学习资料、学习方法和学习经验,帮助我更好地理解和掌握这门课程。在寻找学习资料的过程中,我发现了一款叫做资小料的APP,它里面有很多关于工程制图的学习资料,包括视频教程、习题解答和考试真题等。通过使用资小料,我逐渐掌握了工程制图的基本理论和方法,解决了很多学习中遇到的问题。在这里,我想推荐给和我一样在学习《工程制图习题集》这门课的同学们,希望大家也能从这款APP中受益,共同进步。上传者: 『Consentesdei』蒼迷穀。出版社: 清华大学出版社。

weixin_58833001的博客 925

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

题目来源:团体程序设计天梯赛-练习集 题目地址:L2-004 这是二叉搜索树吗? 题目大意 给定一个长度为 nnn 的序列,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。如果是,则在一行中输出 YES ,然后在下一行输出该树后序遍历的结果,否者直接输出 NO。 题目分析 1. 预备知识 前序遍历:先访问根节点,再遍历左子树,最后遍历右子树。 后序遍历:先遍历左子树,再遍历右子树,最...

Veggie的博客 1万+

华为OD机试2025A卷 - 用户调度问题(Java & Python& JS & C++ & C )

题目要求每个用户依次选择当前所能选择的最小资源消耗策略,并且若有多个策略的资源消耗相同,则选择最后一个策略。每个用户的选择是独立的,只考虑该用户的策略和相邻用户的约束,不考虑整个调度序列的全局资源消耗。每个用户根据自己的当前状态(即自己的三种选择的资源消耗)做出局部最优选择:在当前可选的策略中,选择消耗最小的那个。如果有多个最小值,则选择最后一个(根据题意)。这一选择是局部的最优,即在当下最有利的选择,但并不保证最终的整体系统资源消耗是最小的。

算法大师! 1万+

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

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

weixin_43996076的博客 1195

在 SAP S/4HANA 分析模型中添加 Measures,Calculated、Restricted、Currency Conversion 与 Unit Conversion 的建模思路

摘要: SAP S/4HANA分析查询建模中,度量(measure)的加工层级是关键难点,涉及聚合时机、币种/单位语义、过滤上下文等复杂因素。度量不仅是数字字段,还需处理计算口径(Calculated Measures)、上下文绑定(Restricted Measures)和单位转换等问题。Calculated Measures适合派生指标(如毛利率),需注意聚合前后计算差异;Restricted Measures通过固化过滤条件(如区分实际/计划金额)确保业务语义一致性。建模时应将业务逻辑下沉到分析模型层

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1023

WinCC实现定时存储数据至SQLServer

环境 Win10 WinCC V7.5 SQL Server 2016 运行结果 流程 WinCC变量 全局VB脚本 (我设置的是每2秒存一次,因此周期性触发器设置1秒)

skr? 3988

【算法】二叉树-L2-004 这是二叉搜索树吗?

pta题解

m0_63011748的博客 638

Android CCodec (十七) 硬件解码调用分析-1(基于V4l2)

简单的分析V4L2DecodeComponent和其相关内容,后续针对解码调用单独分析。

给大佬递杯卡布奇诺的博客 6594

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

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

lyx1157013403的博客 698

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

2302_79440616的博客 1021

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

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

m0_49337600的博客 452

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

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

Ruially的博客 518

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
上一篇: L2-003. 月饼
下一篇: L2-005 集合相似度
ChenyutingZJU
博客等级 码龄10年 18粉丝 248原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值