PAT 甲级 1043 Is It a Binary Search Tree

PAT A 甲级 1043 Is It a Binary Search Tree (25分) 1043 Is It a Binary Search Tree (25分) 吐槽 ……感觉二叉树是甲级里最难的一类题了……比图论还难。要变通和自己思考逻辑的部分实在太多了。 思路 首先这道题是“非常规”的,这题不是“这个二叉树是不是搜索树”,而是“这遍历有没有可能是某个搜索树的先序遍历”。正常情况下需要两种遍历才能确立一棵二叉树,但这道题却只给了一种遍历。 不过,“二叉搜索树”本身是有条件的,正是这个条件使得这种确定可以在只有先序遍历的情况下实现。 我首先想到的是二叉搜索树的中序遍历就是数字的从到大(或者镜像的话是从大到小,后面只分析非镜像搜索树),可以靠这一点直接获得一个中序遍历从而用两个遍 立即下载

1043 Is It a Binary Search Tree

题目大意:给出一棵树的先序序列,判断它是否是一个BST或者一个镜面BST

思路:这题主要是树的遍历问题,先假设该树是一棵BST,按照BST的方法建树,然后输出建好树后的先序序列,若是与原数列从小到大排列相同则说明是BST;如果不相同则按照相反的方式遍历这棵树,若得到的先序序列与原数列从大到小排列则说明是镜面BST;否则输出NO。C++完美AC,python测试点5一直非零返回,也不准备找了,花的时间太长了。顺便提一嘴python没有引用真的挺不方便

class Node:
    def __init__(self,data,left=None,right=None):
        self.left=left
        self.right=right
        self.data=data

def insert(node,x):
    if node==None:
        node=Node(x)
    elif x<node.data:
        node.left=insert(node.left,x)
    else:
        node.right=insert(node.right,x)
    return node

def postTraversal(root):
    global postList
    if root!=None:
        postTraversal(root.left)
        postTraversal(root.right)
        postList.append(root.data)
    else:
        return

def postMirrorTraversal(root):
    global postMirrorList
    if root!=None:
        postMirrorTraversal(root.right)
        postMirrorTraversal(root.left)
        postMirrorList.append(root.data)
    else:
        return

def preTraversal(root):
    global preList
    if root!=None:
        preList.append(root.data)
        preTraversal(root.left)
        preTraversal(root.right)
    else:
        return

def preMirrorTraversal(root):
    global preMirrorList
    if root!=None:
        preMirrorList.append(root.data)
        preMirrorTraversal(root.right)
        preMirrorTraversal(root.left)
    else:
        return

n=int(input())
pre=list(map(int,input().split()))
root=Node(pre[0])
for i in range(1,len(pre)):
    insert(root,pre[i])
postList=[]
postMirrorList=[]
preList=[]
preMirrorList=[]
preTraversal(root)
preMirrorTraversal(root)
if preList==pre:
    print("YES")
    postTraversal(root)
    for i in range(len(postList)):
        if i!=0:
            print(" ",end="")
        print(postList[i],end="")
elif preMirrorList==pre:
    print("YES")
    postMirrorTraversal(root)
    for i in range(len(postMirrorList)):
        if i!=0:
            print(" ",end="")
        print(postMirrorList[i],end="")
else:
    print("NO",end="")

Alphafold2/multimer本地安装避坑指南:从Conda环境配置到GPU加速实战 本文详细介绍了Alphafold2/multimer本地安装的全流程,从Conda环境配置到GPU加速实战,特别针对常见的报错处理提供了解决方案。通过硬件环境检查、依赖安装技巧、OpenMM补丁应用等步骤,帮助研究人员高效部署蛋白质结构预测工具,提升计算效率。 阅读详情

相关推荐

超越界面设计:GUI Guider与LVGL在STM32F103上的系统集成与架构思考

本文探讨了GUI Guider与LVGL在STM32F103微控制器上的系统集成与架构设计,重点分析了工程模块化组织、内存管理优化、硬件驱动接口设计以及FreeRTOS多任务集成。针对STM32F103ZET6的资源限制,提供了实用的移植策略和性能优化方案,帮助开发者构建高效、可维护的嵌入式GUI系统。

j2k3l4的博客 921

1043 Is It a Binary Search Tree (25分) 构建二叉排序树

A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes with keys less than the node's key. The right subtree of a node contains only nodes with keys greater th

muAluo的博客 517

一步步指导:在Chrome中安装Vue插件vue-devtools

Vue.js是现代Web开发中最流行的前端框架之一,它以其轻量级、高性能和易于理解的设计理念受到开发者的喜爱。为了更高效地开发和调试Vue应用,Vue.js官方提供了一个强大的开发工具——vue-devtools。

小透明的博客 5619

1043 Is It a Binary Search Tree (二叉搜索树建树,性质)

既然给定了二叉搜索树的所有结点,那第一反应可能会是先将这些结点构建成一个二叉搜索树(正好学到了二叉搜索树的建树)。最直接的解法,也是我最开始的写法,存在很多注意点,问题很多,不太推荐。按理应该能过,但是我最后还是放弃了这种解法。(碎碎念:一直拿不到满分,尝试了多种解法,最后挑了一个最常规的解法去一直debug才满分通过了,,这题花费了快4个小时了,,哭死)涉及到二叉搜索树的一个性质:即二叉搜索树的中序遍历为所有结点的从小到大(镜像为从大到小)的排序。题意:给定一个二叉树的前序遍历,判断是否为二叉搜索树。

qq_63128300的博客 500

Trae AI开发工具:大前端环境配置与避坑指南

大前端开发的第一步往往不是选框架,而是搭建一套可靠的工具链。IDE作为编码、调试与AI能力协同的载体,直接决定后续开发的顺畅度。传统编辑器需要手动拼装插件生态,而新一代AI开发工具将对话、代码生成与项目脚手架能力内置到编辑器底层,降低了环境准备的门槛。Trae基于VS Code内核,兼容其插件体系,同时提供Chat、Builder、内联对话三种AI交互模式,适合从VS Code迁移的开发者,也适合大前端新人快速上手。安装时需认准官方渠道,注意Node.js、Git版本联动,配置自动格式化与手动更新策略,并结

weixin_26833139的博客 281

XIAO ESP32S3 Sense摄像头与麦克风实战:从硬件连接到AI语音视觉项目

本文详细介绍了如何使用Seeed Studio XIAO ESP32S3 Sense开发板进行AI语音视觉项目开发。从硬件连接到Arduino环境搭建,再到摄像头拍照、视频流传输、麦克风录音等实战操作,最后引导读者探索基于TensorFlow Lite Micro的语音唤醒和SenseCraft AI的图像识别等AI应用,为物联网和边缘AI项目提供了完整的入门指南。

xray4的博客 1022

PAT甲级-1043 Is It a Binary Search Tree

二叉排序树,镜像二叉排序树,由二叉排序树的先序求后序 C++

weixin_74092648的博客 612

数字IC设计之时序分析基础概念汇总

时序分析主要有两种办法:静态时序分析: (static timing analysis,STA),是遍历电路存在的所有时序路径,根据给定工作条件(PVT)下的时序库.lib文件计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足约束要求,根据最大路径延时和最小路径延时找出违背时序约束的错误。

weixin_45230720的博客 5605

1043.Is It a Binary Search Tree [二叉搜索树||二叉搜索树的前序转后序]

1043 Is It a Binary Search Tree (25分) A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes with keys less than the node’s key. The right subtree of a node cont

_计算机好苦 239

qwen2vl ValueError: Image features and image tokens do not match: tokens: 568, features 600

本文介绍了一个用于计算多模态数据集中样本token数量的Python工具,特别针对包含文本和图像的Qwen2-VL模型数据集。

q742971636的博客 1012

汽车行业OTD业务模式入门学习

本文是在学习彭俊松老师的《汽车行业整车订单交付系统》后,对于OTD理解的一些摘录,供诸位参考学习。

qq_40664711的博客 1万+

PAT甲级1043、 Is It a Binary Search Tree

建树的方法就是找到根(第一个位置),然后在树的其他部分找到第一个大于或小于根的元素,这里BST的话就找大于的,因为BST左子树全小于根,镜像的话就是小于的,如果能建出来一棵,那么就是可行的,建不出来的话就说明不行。我没有想到什么特别好的思路,只能一边建树一边判断。1、叶子节点没有孩子,要注意怎么判断出来。2、如果一棵树都只有左子树。然后递归下去就可以了。

geooorge的博客 930

【二 Deepseek+Coze案例】【 2.2 Coze + Deepseek 实现小红书爆款笔记:打造专属Agent智能体】

摘要 本文介绍了如何利用Coze平台和Deepseek模型构建自动化Agent智能体,用于生成和优化小红书爆款笔记。文章首先分析了爆款笔记的核心特征,包括精准定位、吸引标题、实用内容、精美排版和热门标签。随后提出Agent智能体的功能需求,涵盖热点追踪、内容生成与优化、数据分析及自动发布等模块。在技术实现上,详细阐述了从环境配置、数据采集到内容生成与优化的全流程,并提供了Python代码示例,展示如何调用Coze函数获取热点数据及竞品笔记。该方案通过智能化的内容创作与运营策略,帮助用户高效打造高曝光的小红书

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 2276

PAT甲级 1043 Is It a Binary Search Tree

【代码】PAT甲级 1043 Is It a Binary Search Tree。

Liu_Xingyun的博客 249

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

PAT 甲级 1043  Is It a Binary Search Tree

1043 Is It a Binary Search Tree (25 point(s)) A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes wi...

漫浸天空的雨色的备忘录~ 1085

STM32F407中文手册

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

1043 Is It a Binary Search Tree——PAT甲级

of a BST.

flyidj的博客 781

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

PAT甲级1043-Is It a Binary Search Tree

PAT甲级1043-Is It a Binary Search Tree 与PAT甲级1020类似,同样使用递归来做,只是划分子序列的方法不同。在PAT甲级1020的基础上修改一下代码即可。 #include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; struct ...

weixin_44500474的博客 189

PAT甲级:1043 Is It a Binary Search Tree

首先根据BST的性质,我们知道对于一颗树的根节点而言,左子树的所有点都比它小,右子树的所有点都比它大。注意:得到后序遍历队列后 我们需要验证一下它的长度是否等于总数N,因为有可能它不是一颗BST或者镜像树,导致上述黑体判断子树部分出错。给定一个序列,问这个序列是否能构成某个二叉搜索树或者其镜像的前序遍历,输出为是否能构成,如果能构成输出后序遍历。这里只讲解是BST的情况,镜像树的情况只需要将BST的判断条件反过来即可。我们分开遍历左右子树,再将根结点放入队列中,得到的就是后序遍历。...

KS的博客 361

1043 Is It a Binary Search Tree-PAT甲级

A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes with keys less than the node's key. The right su...

amf12345的博客 191

PAT甲级-1043 Is It a Binary Search Tree (25分)

点击链接PAT甲级-AC全解汇总 题目: A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes with keys less than the node...

卷子的博客 336

PAT甲级题目1043 Is It a Binary Search Tree

代码: #include<cstdio> #include<vector> using namespace std; struct Node{ int data; Node *left; Node *right; }; int n; vector<int> pre,post,mpre,mpost,origion; void InsertNode(Node *&root,int number) { if(root==NULL) { root=new N

weixin_43801993的博客 170

PAT 甲级 A1043 Is It a Binary Search Tree

题意:给出n个要插入的结点的权重,建立二叉查找树,如果插入序列和该二叉查找树的先序遍历序列一致或者和该二叉查找树的镜面树(左子树都是大于或者等于根节点,右子树都是小于根结点的树)的先序遍历序列一致就输出YES,并输出该树的后序遍历序列,否则输出NO;思路:思路很清晰了,先建立二叉查找树,并保存其插入序列,然后就对该二叉树进行求先序遍历序列和后序遍历序列,也对镜面二叉查找树作相同操作(因为没有建立镜面二叉查找树,根据镜面二叉树的性质更改遍历条件即可),先序遍历和插入序列对比,对就输出后序序列反之输出NO。代码

m0_51711089的博客 406

【PAT甲级 - C++题解】1043 Is It a Binary Search Tree

📣专栏定位:为想考甲级PAT的小伙伴整理常考算法题解,祝大家都能取得满分!

Newin2020的博客 605

PAT 甲级 A1043 Is it a Binary Search Tree

PAT,你伤我好深 这题是算法笔记上的例题,我,没有看懂,他写的什么,然后,看了,一个小时。 主要是看不懂晴神笔记里为什么能直接把题目给的前序序列当作插入的序列,一棵BST的插入序列和前序遍历的序列为什么是相同的……思考了一个多小时终于从崩溃中走出来,直接按自己笔算的思路写了^^ おれは人間をやめるぞ! ジョジョ──ッ!! 我的垃圾思路如下: 1.反证法,假设是BST,因为case给的是preOrder,那么pre[1]>=pre[0]的话就说明是镜像BST,反之是常规BST。 .

sparkling的csdn 179

【PAT 甲级】A1043 Is It a Binary Search Tree(25分)

PAT坑点提示!(当然也可能是我太笨了qwq):定义全局变量的时候一定不要用index这个标识符,否则会提示编译错误!! 原因貌似是用了#include <bits/stdc++.h>,这个头文件貌似已经定义了一些标识符,所以冲突了。当然我在Dev-C++上还是运行良好的… 【版本一:没读明白题就做了,死得很惨,17分】 代码不展示了,连给的样例测试点2都没过hhhh 【版本二:这个题...

weixin_42278063的博客 267
上一篇: PAT 甲级 1040 Longest Symmetric String
下一篇: PAT 甲级 1047 Student List for Course
zerohawk
博客等级 码龄8年 3粉丝 78原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值