当前位置: 首页 > news >正文

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

题目描述

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

输入格式

输入一个正整数n,随后一行给出n个正整数

输出格式

如果该序列是前序遍历的结果,先输出YES , 下一行输出其后序遍历的结果;否则输出NO

解题思路

我这里只会介绍这题用到的所有知识点,至于完整的知识...我也不会(#.#) (✪ω✪)

  1. 二叉搜索树:对于每一个非叶节点, 其左子树所有节点 小于 该节点 , 其右子树所有节点 大于等于 该节点。
  2. 镜像树:即将所有结点的左右子树对换位置后所得到的树
  3. 仅对于二叉搜索树,我们知道后序遍历就可以建树。而对于这个序列而言,左右子树的根分别在两个部分的最右边
  4. 前序遍历的根在前面

现在的目的是检查序列是否是 二叉搜索树或其镜像 前序遍历的结果。我们只需要遍历每一个节点,看看它是否是合法的,即每个节点都要满足
上面给出的二叉搜索树的定义。

ac✅️代码

#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
int n;
vector<int> a,post;
bool isMirror = false;
void getpost(int L,int R)
{if( L > R ) return ;int i = L+1, j = R;if(!isMirror){//i是为了找右子树根,j是为了找左子树的右边界一个子树的边界是L+1 到 R,因为最左边是跟while(i <= R && a[i] < a[L]) i++;while(j > L && a[j] >= a[L]) j--;如果全部全部都扫描了一遍,最后i在右子树第一个位置,j在左子树最后一个位置}else {while(i <= R && a[i] >= a[L]) i++;while(j > L && a[j] < a[L]) j--;}if(i - j != 1) return ;//如果是二叉搜索树,每个节点的左右子树在序列中是相邻的,即最后的边界交叉//1. 如果放在这,最后输出的结果是前序遍历getpost(L+1,j);//递归处理左子树//2. 如果放在这,最后输出的结果是中序遍历getpost(i,R);//递归处理右子树//3. 如果放在这,最后输出的结果是后序遍历post.push_back(a[L]);}
int main()
{cin>>n;a.resize(n);for(int i = 0 ; i < n ; i++) cin>>a[i];getpost(0,n-1);if(post.size() != n){isMirror = true;post.clear();getpost(0,n-1);}if(post.size() == n){cout<<"YES"<<endl;for(int i = 0 ; i < n ; i++){    cout<<post[i];if(i != n-1 ) cout <<" ";}cout<<endl;}else cout<<"NO"<<endl;return 0;
}
http://www.jsqmd.com/news/477269/

相关文章:

  • HarmonyOS APP<玩转React>开源教程六:数据模型设计与实现
  • 多模态AI实战:CLIP模型原理与代码深度剖析
  • 基于QWidget创建的自定义窗口在使用isVisible时造成程序崩溃
  • 2026海鲜泡沫箱采购攻略:精选厂家不容错过,国内头部泡沫箱企业排行榜单赋能企业生产效率提升与成本优化 - 品牌推荐师
  • 【最好最全面】openclaw安装方法【教程即时更新,永不过期】
  • CSDN Markdown 微笑与 section 符号
  • 打印机连接故障排除方案
  • SNMP(简单网络管理协议)
  • Python 中通过命令行向函数传参
  • 天津市优秀的GEO生成式AI引擎优化的公司有哪些
  • **WebTransport:下一代低延迟实时通信协议的实战解析与代码实现**
  • LSTM的工作原理
  • 2026年创业热潮来袭,专业创业指导定制公司能否成为TOP选择?
  • 闲置天猫超市卡别等过期!这样处理,安全又省心 - 可可收
  • 第三章 第一性原理:从零到一的完整思考方法论
  • 技术:双电脑共享鼠标、键盘解决方案 | USB对拷线、Synergy
  • 电赛信号题备赛日记(1)移植正点原子STM32H750 mini pro的TFTLCD屏幕
  • 行楷 - 汉字行楷手写体字形
  • 文献汇总|AI生成图像检测与溯源相关工作(2026)
  • Win10 WSL安装Centos7 Nginx+PHP+MySQL
  • 柔性温度传感器--折线型结构
  • Tomcat简单实现
  • 关于学生课堂行为识别算法
  • 微软 GraphRAG从构图到检索的核心逻辑与代码实现
  • 2026年黄铜、不锈钢、钛合金光纤接头精密零件CNC加工厂家权威推荐:这三家凭什么脱颖而出? - 余文22
  • Esri 2020 10m全球土地覆盖数据下载(Land Cover Downloader)
  • Visual Studio - 修改主题背景颜色
  • 衬线字体 (serif) 和无衬线字体 (sans-serif)
  • Flutter 三方库 google_play_scraper 鸿蒙适配指南 - 实现高性能应用商店元数据抓取、在 OpenHarmony 上打造竞品分析数据防御线实战
  • 蜂胶经常吃的品牌是选哪个? 2026年高吸收蜂胶TOP十榜单:10款实测优选! - 博客万