pat1043Is It a Binary Search Tree (25)

lp–mspm0g3507开发板进入低功耗模式怎么退出?烧程序烧着烧着就进来了,跳线帽没动过,且报错:Texas Instruments Debugger Error: DAP Co...如何解决? 🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀! 阅读详情

题意分析:

(1)给出一数列,判断这个数列是否是一个二叉查找树的先序遍历序列或镜像二叉查找树的先序遍历序列,所谓镜像二叉查找树就是二叉查找树所有节点的左右子树交换后的二叉树

(2)二叉查找树有一个特性就是根节点左边所有子树节点的值小于根节点的值,右子树所有节点的值大于或等于根节点的值,同时左右子树也是一颗二叉查找树

(3)由(2)的递归的性质:于是判断这个序列是否是BST或者镜像BST先序遍历序列也是递归实现的:若是BST,首先根节点i肯定是第一个数,假设之后从i+1到j的连续项是小于num[i]的,按照定义,这是左子树,从第j+1项起,后面所有项是右子树,若存在小于num[i]的项,则这一定不是BST的先序遍历序列。然后递归判断下去。

(4)接下来就是要根据有规律的先序序列来构造后序序列,策略依然是递归构造。这里有两种思路:一种是根据这种BST性质和先序序列去构造二叉树,然后再后序遍历这颗二叉树。但是很遗憾,这样做会导致段错误,是因为数据量过大时建树会造成溢出,代码如下:

void buildTree(TreeNode *&root,int num[],int start,int end,bool flag)
{
    root=(TreeNode*)malloc(sizeof(TreeNode));
    if(start==end)
    {
        root->value=num[start];
        root->lchild=NULL;
        root->rchild=NULL;
        return;
    }
    if(start>end)root=NULL;
    int lr,rl;
    if(flag)
    {
        for(lr=start+1;lr<=end&&num[lr]<num[start];lr++);
        for(rl=lr;rl<=end;rl++)
        {
            if(num[rl]<num[start])return;
        }
    }
    else
    {
        for(lr=start+1;lr<=end&&num[lr]>=num[start];lr++);
        for(rl=lr;rl<=end;rl++)
        {
            if(num[rl]>=num[start])return;
        }
    }
    root->value=num[start];
    buildTree(root->lchild,num,start+1,lr-1,flag);
    buildTree(root->rchild,num,lr,end,flag);
}
另外一种思路就是直接使用递归打印:因为左右子树的边界很容易确定,因此先访问左子树,再访问右子树,再访问根节点。

(5)最后需要注意的是:要区分是BST还是镜像BST,很简单,直接判断num[0]和num[1]的大小,然后设置flag来标识这是按什么顺序来作为参数传入,这样就避免相同代码的冗余

可能坑点:

(1)不要建树,否则会因为存储过大导致段错误

(2)要区分BST和镜像BST

#include <iostream>
#include <stdlib.h>
using namespace std;
int num[1001];
bool checkBST(int num[],int start,int end,bool flag)
{
    if(start>=end)return true;
    int lr,rl;
    if(flag)
    {
        for(lr=start+1;lr<=end&&num[lr]<num[start];lr++);
        for(rl=lr;rl<=end;rl++)
        {
            if(num[rl]<num[start])return false;
        }
    }
    else
    {
        for(lr=start+1;lr<=end&&num[lr]>=num[start];lr++);
        for(rl=lr;rl<=end;rl++)
        {
            if(num[rl]>=num[start])return false;
        }
    }
    if(checkBST(num,start+1,lr-1,flag)&&checkBST(num,lr,end,flag))
    {
        return true;
    }
}
int first=1;
void postOrder(int num[],int start,int end,bool flag)
{
    if(start>end)return;
    int lr,rl;
    if(flag)
    {
        for(lr=start+1;lr<=end&&num[lr]<num[start];lr++);
        for(rl=lr;rl<=end;rl++)
        {
            if(num[rl]<num[start])return;
        }
    }
    else
    {
        for(lr=start+1;lr<=end&&num[lr]>=num[start];lr++);
        for(rl=lr;rl<=end;rl++)
        {
            if(num[rl]>=num[start])return;
        }
    }
    postOrder(num,start+1,lr-1,flag);
    postOrder(num,lr,end,flag);
    if(first)first=0;
    else cout<<" ";
    cout<<num[start];
}
int main()
{
    int N,i=0;
    cin>>N;
    while(i<N)cin>>num[i++];
    bool flag=(num[1]<num[0]?1:0);
    if(checkBST(num,0,N-1,flag))
    {
        cout<<"YES"<<endl;
        postOrder(num,0,N-1,flag);
    }
    else cout<<"NO"<<endl;
    return 0;
}



C-08-实战:搭建一个AI客服机器人(接入微信企微) 客服是一人公司最大的时间杀手。本文教你搭建一个AI客服机器人,能自动回答80%的常见问题,只把复杂问题转给人工。含微信公众号和企业微信接入完整代码。 阅读详情

相关推荐

CODESYS EtherCAT通讯断了怎么办?手把手教你用ST语言写状态监测程序(附完整代码)

本文详细解析了CODESYS平台下EtherCAT通讯中断的故障排查与恢复方法,通过ST语言编写状态监测程序实现链路监测、故障隔离和伺服恢复。文章包含完整代码示例,帮助工程师快速诊断EtherCAT网络问题,提升工业自动化设备的运行稳定性。

weixin_30919571的博客 209

A1099 Build A Binary Search Tree (30 分| 二叉查找树,附详细注释,逻辑分析)

写在前面 思路分析 二叉搜索树 中序从小到大顺序输出 从小到大可以建立一个树 热点知识,学习ing 测试用例 input: 9 1 6 2 3 -1 -1 -1 4 5 -1 -1 -1 7 -1 -1 8 -1 -1 73 45 11 58 82 25 67 38 42 output: 58 25 82 11 38 67 45 73 42 ac代码 参考代码#include...

kngines 419

半导体硅制造工艺

抛光液和硅片的反应速度很快,只要稍一停留,立刻便会腐蚀,因此取片时,不能在表面上留下抛光液,必须紧接着水抛,直至抛光液被全部冲去,再将片子取下。由于晶圆制造过程有各种各样的晶圆固定器和自动设备,需要严格的直径控制以减少晶圆翘曲和破碎,而单晶硅棒的外径表面并不平整且直径也比最终抛光晶片所规定的直径规格大,因此需要通过外径滚磨获得较为精确的直径。胶体的颗粒直径比磨料的颗粒直径小一个数量级,且硬度与硅相当,因此它比用磨料的机械抛光表面损伤更小,抛光出的硅片表面具有高度的镜面光洁。不受材料导电类型和电阻率的影响。

pgpaojiao的博客 2240

pat甲级1119-----有一点不理解,望解答。

我是通过建树做的,第一次在后序中找先序的preL+1,第二次在先序中找后序的postR-1,问题来了。。 第一次全部段错误。 #include<stdio.h> int pre[35],post[35]; int n,num=0; bool flag=true; struct node{ int data; node *lchild,*rchild; }; n...

代洋 257

别再手动调参数了!用3ds Max的tyDiffusion插件,5分钟搞定AI动态纹理生成

本文介绍了3ds Max的tyDiffusion插件如何通过AI技术快速生成动态纹理,大幅提升3D美术师的工作效率。从火焰、水流到布料飘动,tyDiffusion能在5分钟内完成传统手工需要数小时的任务,且效果更自然。文章详细解析了插件的核心功能、实战配置及进阶应用,帮助用户轻松实现AI动态纹理生成。

weixin_30919429的博客 667

库卡kuka仿真软件sim Pro 3.1简单实用教程

实验目的 建立机器人,自定义抓手,导入外部模型,掌握工具坐标、基坐标的使用,自动生成轨迹。 实验步骤 打开KUKA.Sim Pro 3.1.2仿真软件,依次点击KUKA Sim Library 3.1 → KUKA_ROBOTS→Small Robots(3kg-10kg)→Archiv→AGILUS-1 Series→sixx,双击KR 6 R700 sixx,加载机器臂到工作空间; 加载自定义抓手。双击Miscellaneous,再双击圆锥Cone设置上半径为0,下半径为40,高为100; 点击“捕

weixin_45168199的博客 4万+

Binary Search Tree(二叉查找树)

Binary Search Tree 也被成为 ordered binary tree(有序二叉树)或 sorted binary tree(排序二叉树),有如下性质: 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值; 任意节点的左、右子树也分别为二叉查找树; 没有键值相等的节点。 和数组,链表的比较 数...

kuma的博客 1万+

VS2015+Qt+OpenCV+open62541开发过程(05_VS2015中使用OPCUA open62541通过Kepware读写PLC数据)

此外还需要所需lib包:WS2_32.Lib(opcua通讯用到的库,opcua使用socket通讯,需使用此库),添加#pragma comment(lib,"ws2_32.lib") 语句,有的文章说需要添加ws2_32.lib文件或ws2_32.dll到项目资源中,貌似影响不大。2.在VS中选择x64平台会报错,选择x86平台可以用,应该是ws2_32.lib相关的库不支持64位,目前没有解决,继续后面的实验,看看用Qt后是否可以解决。6.VS中建立的变量,与读取的OPC点数据类型注意对应。

zzh17的博客 1862

1043 Is It a Binary Search Tree@PTA

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 s...

李狗嗨acc 227

5.FxBlue跟单常见问题

fxblue喊单ea和fxblue跟单会在mt4/mt5客户端ea栏目里记录fxblue在跟单复制订单过程中的全面记录。在遇到问题时,我们首先要恢复默认参数尝试,然后再到ea栏找报错提示。 ​ 需要注意的是,是EA选项卡,而不是日志选项卡。 此外,您可以在 MT4/5 软件终端面板的"EA"选项卡中查看跟单记录,您可以通过右键单击 Experts 日志并从 MT4/5 的弹出菜单中选择“打开”来打开每日日志文件以及历史文件。 5.1 No “heartbeat” received 没有收到“心跳” 接收方

weixin_44406393的博客 1874

五子棋ai:极大极小搜索和α-β剪枝算法的思想和实现(qt和c++)(一)引言和界面设计

引言 alphaGo击败围棋冠军李世石的新闻让我对棋类博弈产生了浓厚的兴趣,无奈本人不会围棋,但算是一个五子棋业余爱好者,于是乎希望通过实现一个五子棋ai来了解相关算法和知识。 五子棋在英文中又称Gobang,five-in-row,还有两个称呼:gomoku和renju(连珠)。我来简要介绍一下区别。由于五子棋已经被机器严格证明了是一种**“不公平”的游戏,先手黑子是绝对占优的,并且先手有必胜*...

livingsu的博客 1万+

PAT A1043 Is It a Binary Search Tree (25 分)

1043Is 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...

树叶子的博客 466

解锁RK3588 HDMI输出:分辨率与EDID的深度探索

本文详细探讨了瑞芯微RK3588处理器的HDMI输出分辨率配置与EDID解析技术。文章首先介绍了RK3588处理器的性能特点及其HDMI功能在多媒体和工业领域的应用价值,随后分别阐述了HDMI输出分辨率的硬件连接要求和软件配置方法,包括4K/8K等不同分辨率的配置实例。在EDID部分,深入解析了EDID的数据结构、交互机制,以及数据获取与修改的具体方法。最后总结了配置过程中常见问题的解决方案,并展望了RK3588在高分辨率显示领域的发展前景。全文为开发者提供了RK3588 HDMI显示配置的完整技术指南。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 591

PAT 1043. Is It a Binary Search Tree (25)

http://pat.zju.edu.cn/contests/pat-a-practise/1043

Steve Sun的专栏 2693

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

浙大 PAT 1043. Is It a Binary Search Tree (25)

1043. Is It a Binary Search Tree (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A Binary Search Tree (BST) is r

凌风 5207

精雕软件(JDpaint) 5.5 绿色版

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

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

1043 Is It a Binary Search Tree (25分) 吐槽 ……感觉二叉树是甲级里最难的一类题了……比图论还难。要变通和自己思考逻辑的部分实在太多了。 思路 首先这道题是“非常规”的,这题不是“这个二叉树是不是搜索树”,而是“这遍历有没有可能是某个搜索树的先序遍历”。正常情况下需要两种遍历才能确立一棵二叉树,但这道题却只给了一种遍历。 不过,“二叉搜索树”本身是有条件的,正是...

虚境的博客 244

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

解题过程的小记录,如有错误欢迎指出。 难度:四星(又是没看懂题目的一题) 小导航~题目分析注意点我的解题过程思路bug代码dalao的代码借鉴点 题目分析 给出一串数列,该数列是二叉搜查数的插入数列,按照插入顺序建立树后看这个数列是否是该数的先序遍历数列,或者是镜像先序遍历数列(镜像也就是左右子树交换) 注意点 不能采用BST的中序遍历数列是递增数列的特性结合先序序列,因为本题的数字有重复 插入建树注意返回值,和参数的引用 我的解题过程 思路 利用数列进行插入建立BST,同时把数列保存在vector数

SpicyChicken的自我修养 347

1043. Is It a Binary Search Tree (25)—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 righ

兵临城下 1004

PAT A1043 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 righ...

xiao1guaishou的博客 398

精解1043. Is It a Binary Search Tree (25)-PAT甲级真题

1043. Is It a Binary Search Tree (25)-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 wit...

honeyShi's Blog 890

【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 1043 Is It a Binary Search Tree (25)

1043 Is It a Binary Search Tree (25)(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 ...

ryo_218的博客 197

[PAT]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 ri...

刘好念的博客 329

PAT A1043 Is It a Binary Search Tree(25 分)

  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 ke...

qq_20565303的专栏 427

[C++] PAT 1043 Is It a Binary Search Tree (25分)

Sample Input 1: 7 8 6 5 7 10 8 11 Sample Output 1: YES 5 7 6 8 11 10 8 Sample Input 2: 7 8 10 11 8 6 7 5 Sample Output 2: YES 11 8 10 7 5 6 8 Sample Input 3: 7 8 6 8 5 10 9 11 Sample Output 3: NO 题解 代码来源于《算法笔记》 #include <iostream> #inclu.

快乐de约定的博客 1997

PAT 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 grea

qq_42593220的博客 300
上一篇: pat1042Shuffling Machine (20)
下一篇: pat1044Shopping in Mars (25)
LostStephon
博客等级 码龄11年 14粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值