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

二叉树(中南大学)

二叉树的先序序列查看题解 查看答案题目描述Time Limit: 1000 msMemory Limit: 256 mb已知二叉树的中序和先序遍历可以唯一确定后序遍历、已知中序和后序遍历可以唯一确定先序遍历但已知先序和后序却不一定能唯一确定中序遍历。现要求根据输入的中序遍历结果及后序遍历结果要求输出其先序遍历结果。输入输出格式输入描述:第一行为中序序列 第二行为后续序列输出描述:输出为遍历二叉树得到的先序序列输入输出样例输入样例#:复制BFDAEGC FDBGECA输出样例#:复制ABDFCEG题目来源中南大学机试习题#includebits/stdc.h using namespace std; struct TreeNode{ char data; struct TreeNode *left; struct TreeNode *right; TreeNode(int val) : data(val), left(NULL), right(NULL){} }; void LevelOrder(TreeNode* root){ if(root NULL){ coutYendl; return; } queueTreeNode*s; bool total true; s.push(root); while(!s.empty()){ TreeNode* p s.front(); s.pop(); if(p NULL){//是空的就标记 total false; } else{ if(total false){ coutNendl; return; } s.push(p-left); s.push(p-right); } } coutYendl; return; } void preOrder(string in, string post){ if(in || post ){ return; } int n post.size(); char str post[n - 1]; int pos in.find(str); coutstr; preOrder(in.substr(0, pos), post.substr(0, pos));//pos是第4个 substr切割不包含pos preOrder(in.substr(pos 1), post.substr(pos, post.size() - pos - 1)); return; } int main() { int n; string in, post; while(cininpost){ // n post.size(); // char str post[n - 1]; // int pos in.find(str); // coutstr; // preOrder(in.substr(0, pos), post.substr(0, pos));//pos是第4个 substr切割不包含pos // preOrder(in.substr(pos 1), post.substr(pos, post.size() - pos - 1)); preOrder(in, post); coutendl; // BFDAEGC // FDBGECA } }二叉树的后序序列查看题解 查看答案题目描述Time Limit: 1000 msMemory Limit: 256 mb已知二叉树的中序和先序遍历可以唯一确定后序遍历、已知中序和后序遍历可以唯一确定先序遍历但已知先序和后序却不一定能唯一确定中序遍历。现要求根据输入的中序遍历结果及先序遍历结果要求输出其后序遍历结果。输入输出格式输入描述:输入数据占2行其中第一行表示中序遍历结果第二行为先序遍历结果。输出描述:对测试数据输出后序遍历结果。输入输出样例输入样例#:复制BFDAEGC ABDFCEG输出样例#:复制FDBGECA题目来源中南大学机试习题#includebits/stdc.h using namespace std; struct TreeNode{ char data; struct TreeNode* left; struct TreeNode* right; TreeNode(int val) : data(val), left(NULL), right(NULL){} }; string result ; void preOrder(TreeNode *root){ if(root NULL){ return; } result result root-data; // cout root-data ; preOrder(root-left); preOrder(root-right); } void inOrder(TreeNode *root){ if(root NULL){ return; } inOrder(root-left); result result root-data; // cout root-data ; inOrder(root-right); } TreeNode* buildTree(string str){ } void levelOrder(TreeNode* root, int n){ if(root NULL){ coutNULLendl; return; } int count 0; queueTreeNode*s; s.push(root); while(!s.empty()){ TreeNode* p s.front(); s.pop(); count ; if(count n){ coutp-dataendl; return; } if(p-left){ s.push(p-left); } if(p-right){ s.push(p-right); } } } void postOrder(string in, string pre){ if(in || pre ){ return; } char str pre[0]; int pos in.find(str); postOrder(in.substr(0, pos), pre.substr(1, pos)); postOrder(in.substr(pos 1), pre.substr(pos 1)); coutstr; } int main(){ int n 0; string in, pre; while(cininpre){ postOrder(in, pre); coutendl; } }二叉树的深度查看题解 查看答案题目描述Time Limit: 1000 msMemory Limit: 256 mb利用先序递归遍历算法创建二叉树并计算该二叉树的深度。先序递归遍历建立二叉树的方法为按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符#时表示该结点不需要创建否则创建该结点。最后再统计创建完成的二叉树的深度使用二叉树的后序遍历算法。需要注意输入数据序列中的#字符和非#字符的序列及个数关系这会最终决定创建的二叉树的形态。输入输出格式输入描述:输入为先序遍历二叉树结点序列。输出描述:对应的二叉树的深度。输入输出样例输入样例#:复制A## ABC#### AB##C## ABCD###E#F##G## A##B##输出样例#:复制1 3 2 4 1题目来源中南大学机试习题#includebits/stdc.h using namespace std; struct TreeNode{ char data; struct TreeNode* left; struct TreeNode* right; TreeNode(int val) : data(val), left(NULL), right(NULL){} }; void preOrder(TreeNode *root){ if(root NULL){ return; } // cout root-data ; preOrder(root-left); preOrder(root-right); } void inOrder(TreeNode *root){ if(root NULL){ return; } inOrder(root-left); // cout root-data ; inOrder(root-right); } int pos 0; TreeNode* buildTree(string str){ if(pos str.size()){ return NULL; } char data str[pos]; pos ; if(data #){ return NULL; } TreeNode* root new TreeNode(data); root-left buildTree(str); root-right buildTree(str); return root; } void levelOrder(TreeNode* root, int n){ if(root NULL){ coutNULLendl; return; } int count 0; queueTreeNode*s; s.push(root); while(!s.empty()){ TreeNode* p s.front(); s.pop(); count ; if(count n){ coutp-dataendl; return; } if(p-left){ s.push(p-left); } if(p-right){ s.push(p-right); } } } void postOrder(string in, string pre){ if(in || pre ){ return; } char str pre[0]; int pos in.find(str); postOrder(in.substr(0, pos), pre.substr(1, pos)); postOrder(in.substr(pos 1), pre.substr(pos 1)); coutstr; } int countDepth(TreeNode* root){ if(root NULL){ return 0; } int left countDepth(root-left); int right countDepth(root-right); return max(left, right) 1; } int main(){ int n 0; string in, pre; string str; while(cinstr){ pos 0; TreeNode* root buildTree(str); int count countDepth(root); coutcountendl; } }二叉树叶结点的个数查看题解 查看答案题目描述Time Limit: 1000 msMemory Limit: 256 mb利用先序递归遍历算法创建二叉树并计算该二叉树叶结点的个数。先序递归遍历建立二叉树的方法为按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符#时表示该结点不需要创建否则创建该结点。最后再统计创建完成的二叉树叶结点的个数。需要注意输入数据序列中的#字符和非#字符的序列及个数关系这会最终决定创建的二叉树的形态。输入输出格式输入描述:接受键盘输入的由大写英文字符和#字符构成的一个字符串用于创建对应的二叉树。输出描述:输出对应的二叉树叶结点的个数。输入输出样例输入样例#:复制# A## ABC#### AB##C## ABCD###EF##G### A##B## #A输出样例#:复制0 1 1 2 3 1 0题目来源中南大学机试习题#includebits/stdc.h using namespace std; struct TreeNode{ char data; struct TreeNode *left; struct TreeNode *right; TreeNode(int val) : data(val), left(NULL), right(NULL){} }; void LevelOrder(TreeNode* root){ if(root NULL){ cout0endl; return; } queueTreeNode*s; s.push(root); int count 0; while(!s.empty()){ TreeNode* p s.front(); s.pop(); if(p-left NULL p-right NULL){ count ; } if(p-left){ s.push(p-left); } if(p-right){ s.push(p-right); } } coutcountendl; return; } void preOrder(string in, string post){ if(in || post ){ return; } int n post.size(); char str post[n - 1]; int pos in.find(str); coutstr; preOrder(in.substr(0, pos), post.substr(0, pos));//pos是第4个 substr切割不包含pos preOrder(in.substr(pos 1), post.substr(pos, post.size() - pos - 1)); return; } int pos 0; TreeNode* buildTree(string str){ if(pos str.size()){//最好写成 if(pos str.size())加个等号更安全防止访问到字符串的结束符 return NULL; } char data str[pos]; pos ; if(data #){ return NULL; } TreeNode* root new TreeNode(data); root-left buildTree(str); root-right buildTree(str); return root; } int countNode(TreeNode* root){ if(root NULL){ return 0; } if(root-left NULL root-right NULL){ return 1; } return countNode(root-left) countNode(root-right); } int main() { int n; string in, post; string str; while(cinstr){ pos 0; TreeNode* root buildTree(str); // LevelOrder(root); int count countNode(root); coutcountendl; // BFDAEGC // FDBGECA } }判断二叉树是否对称查看题解 查看答案题目描述Time Limit: 1000 msMemory Limit: 256 mb层次遍历的方式输入一个二叉树判断这个二叉树的结构即不用管结点的值是否镜像对称。输入输出格式输入描述:输入一行字母其中#表示空节点字母长度小于1000。输出描述:如果输入的二叉树对称输出YES否则输出NO。输入输出样例输入样例#:复制ABC####输出样例#:复制YES题目来源东北大学机试题#includebits/stdc.h using namespace std; struct TreeNode{ char data; struct TreeNode* left; struct TreeNode* right; TreeNode(int val) : data(val), left(NULL), right(NULL){} }; void preOrder(TreeNode *root){ if(root NULL){ return; } // cout root-data ; preOrder(root-left); preOrder(root-right); } void inOrder(TreeNode *root){ if(root NULL){ return; } inOrder(root-left); // cout root-data ; inOrder(root-right); } int pos 0; TreeNode* buildTree(string str){ if(pos str.size()){ return NULL; } char data str[pos]; pos ; if(data #){ return NULL; } TreeNode* root new TreeNode(data); root-left buildTree(str); root-right buildTree(str); return root; } TreeNode* levelOrder(string str){ if(str #){ return NULL; } int count 0; queueTreeNode*s; char data str[0]; TreeNode* root new TreeNode(data); s.push(root); int i 1; while(!s.empty() i str.size()){ TreeNode* p s.front(); s.pop(); char left str[i]; if(left #){//左空 p-left NULL; } else{ p-left new TreeNode(left); s.push(p-left); } i; if(i str.size()){ break; } char right str[i]; i; if(right #){//右空 p-right NULL; } else{ p-right new TreeNode(right); s.push(p-right); } } return root; } bool mirror(TreeNode* p, TreeNode* q){ if(p NULL q NULL){ return true; } if(p NULL || q NULL){ return false; } return mirror(p-right, q-left) mirror(p-left, q-right); } void postOrder(string in, string pre){ if(in || pre ){ return; } char str pre[0]; int pos in.find(str); postOrder(in.substr(0, pos), pre.substr(1, pos)); postOrder(in.substr(pos 1), pre.substr(pos 1)); coutstr; } int countDepth(TreeNode* root){ if(root NULL){ return 0; } int left countDepth(root-left); int right countDepth(root-right); return max(left, right) 1; } int main(){ int n 0; string in, pre; string str; while(cinstr){ pos 0; TreeNode* root levelOrder(str); bool is_mirror true; is_mirror mirror(root-left, root-right); if(is_mirror) { coutYESendl; } else { coutNOendl; } } }找二叉树的最后一层的最后一个结点查看题解 查看答案题目描述Time Limit: 1000 msMemory Limit: 256 mb寻找二叉树以的最后一层的最后一个结点并输出该结点的数据域的值如果是空树则输出NULL。输入输出格式输入描述:先序遍历序列输出描述:最后一个结点的值输入输出样例输入样例#:复制# ABC#### ABD##EG##H##C#FI####输出样例#:复制NULL C I题目来源中南大学机试习题#includebits/stdc.h using namespace std; struct TreeNode{ char data; struct TreeNode* left; struct TreeNode* right; TreeNode(int val) : data(val), left(NULL), right(NULL){} }; string result ; void preOrder(TreeNode *root){ if(root NULL){ return; } result result root-data; // cout root-data ; preOrder(root-left); preOrder(root-right); } void inOrder(TreeNode *root){ if(root NULL){ return; } inOrder(root-left); result result root-data; // cout root-data ; inOrder(root-right); } void postOrder(TreeNode *root){ if(root NULL){ return; } postOrder(root-left); postOrder(root-right); cout root-data ; } int pos 0; TreeNode* buildTree(string str){ if(pos str.size()){ return NULL; } char data str[pos]; pos ; if(data #){ return NULL; } TreeNode* root new TreeNode(data); root-left buildTree(str); root-right buildTree(str); return root; } void levelOrder(TreeNode* root, int n){ if(root NULL){ coutNULLendl; return; } int count 0; queueTreeNode*s; s.push(root); while(!s.empty()){ TreeNode* p s.front(); s.pop(); count ; if(count n){ coutp-dataendl; return; } if(p-left){ s.push(p-left); } if(p-right){ s.push(p-right); } } } int main(){ int n 0; string str; while(cinstr){ n 0; for(int i 0; i str.size(); i ){ if(str[i] A str[i] Z){ n ; } } pos 0;//重置一下 TreeNode* root buildTree(str); levelOrder(root, n); } }

相关文章:

二叉树(中南大学)

二叉树的先序序列 查看题解 查看答案 题目描述 Time Limit: 1000 ms Memory Limit: 256 mb 已知二叉树的中序和先序遍历可以唯一确定后序遍历、已知中序和后序遍历可以唯一确定先序遍历,但已知先序和后序,却不一定能唯一确定中序遍历。现要求根据输入…...

RabbitMQ—消息元数据解析指南

本文介绍了RabbitMQ的Java客户端实现,包含生产者和消费者代码示例。生产者通过建立连接、创建信道、声明队列,循环发送10条消息到"hello"队列;消费者同样建立连接后订阅该队列,通过DefaultConsumer接收并打印消息。文章…...

【UE】【BP】在蓝图中Key关卡序列

以前都是处理资产标准化,遍历材质和相关param和refrence相关就可以,第一次接触Seq,还挺有意思。 但是因为后续多半是使用As来编写逻辑了,不会使用蓝图了,所以这个文档多半不会再更新。 学习思路和实际上的实现逻辑是接…...

VMware 17 安装 RHEL 8

1、准备工作:VMware 17 exe安装包 RHEL 8 iso镜像文件2、博通官网下载VMware并安装3、创建新的虚拟机选择稍后安装操作系统,在后面选择Linux 并选择RHEL 8 64bit根据自己电脑配置设置好虚拟机配置,虚拟机所需20g,在选择完之后…...

Python 100例:编程实践与技巧解析

Python 100例:编程实践与技巧解析 引言 Python作为一种广泛使用的编程语言,以其简洁的语法和强大的库支持在各个领域都得到了广泛应用。为了帮助读者更好地掌握Python编程,本文将为您精选100个Python编程实例,涵盖基础语法、数据结…...

文本转音频网站

Free Text to Speech TTS Converter | Read Aloud Text to MP3...

征程 6X Camera 接入数据评估

1.接入带宽计算 1.1 Camera 接入时,需评估链路上各模块之间的理论要求和限制,接入通路一般涉及加解串器,MIPI,CIM, ISP(RAW),PYM,GDC/STITCH(可选&#xff09…...

一种半自动交通标注的混合框架:将 YOLOv11 目标检测与 CLIP 语义验证相结合

原文地址,本文仅作翻译学习使用,如遇侵权,请联系本人删除 Original content. This article is only for translation learning purposes. If there is any infringement, please contact me to delete it. A Hybrid Framework for Semi-Aut…...

B端拓客核验难题:精准度与成本,到底该怎么平衡?氪迹科技法人号码核验工具

做B端客户拓展的团队,几乎都绕不开一个核心环节——企业法人、股东、核心决策人号码的核验与筛选。人工手筛耗时费力,根本无法规模化;可依赖工具,又常常陷入两难困境。做B端拓客,仿佛总要面临二选一:要么被…...

新西伯利亚大学推出“Pisets“:让机器写字员听懂每一句话

这项由新西伯利亚州立大学与西伯利亚神经网络有限公司合作完成的研究发表于2026年1月26日,论文编号为arXiv:2601.18415v1。有兴趣深入了解的读者可以通过该编号查询完整论文。研究团队开发了一款名为"Pisets"的语音识别系统,这个名字来源于古罗…...

2024提示工程架构师趋势:自主代理AI的7个革命性提示策略

2024自主代理AI爆发:提示工程架构师必须掌握的7个革命性策略 一、引言:从“被动回答”到“主动解决”,提示工程的下一个战场 2023年,我们聊提示工程时,核心是“如何让AI更精准地回答问题”;2024年,当**自主代理AI(Autonomous AI Agents)**从实验室走进生产场景——比…...

上海交大首创PlanViz:计算机使用任务中的智能图像生成新基准

这项由上海交通大学、复旦大学和华为技术有限公司联合开展的研究发表于2026年2月的arXiv预印本,论文编号为arXiv:2602.06663v1。有兴趣深入了解的读者可以通过该编号查询完整论文。 在我们日常使用电脑和手机的过程中,经常需要处理各种视觉任务&#xff…...

QT 事件驱动架构

很多大型系统(工业软件、机器人系统、自动驾驶、复杂 Qt 应用)在规模变大以后,都会逐渐引入 事件驱动架构(Event Bus / Event Driven Architecture)。 原因很简单:当系统模块越来越多时,模块之间…...

大数据领域数据预处理的重要性及实施策略

大数据领域数据预处理的重要性及实施策略 关键词:大数据、数据预处理、数据清洗、数据集成、数据转换、数据归约、实施策略 摘要:本文深入探讨大数据领域中数据预处理的重要性,通过形象的比喻和实际案例,阐述数据清洗、集成、转换、归约等核心概念及其相互关系。同时,借助…...

物理常识,原来世界是这样的。

宇宙 & 相对论类1. 任何有质量的物体都不可能达到光速,只能无限接近。 2. 速度越快,时间越慢。你跑起来的时候,时间真的比站着的人过得慢一点点。 3. 引力本质不是“拉力”,而是质量把时空压弯了,物体只是沿着弯曲…...

TR-069/TR-369 项目框架实施总结

TR-069/TR-369 项目框架实施总结 📋 实施概览 已成功搭建 TR-069 CWMP 和 TR-369 USP 协议的项目框架,完成 P0 优先级的核心类实现。 ✅ 已完成工作 1. 项目结构搭建 1.1 模块划分 ✅ yudao-module-iot-tr069 - TR-069 CWMP 协议模块 ✅ yudao-module-iot-tr369 - TR-3…...

基于Python的教学辅助系统设计与实现毕业设计源码

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在设计并实现一款基于Python的教学辅助系统,旨在提高教学效率、优化教学过程、丰富教学手段,并为学生提供个性化学习体验。具体研…...

【2.19】Gardner环硬件片内测试2——硬件测试和分析

目录 1.学习回顾 2.综合布局布线 3.产生bit文件 4.程序烧写 5.在线波形查看和调试 6.程序硬件调试操作视频 本文介绍了FPGA开发板硬件调试的全流程: 1)回顾前期准备工作; 2)详细讲解综合布局布线步骤及其重要性; 3)说明bit文件的生成与作用; 4)演示程序…...

库存管理,把这4件事做好就够了

目录 第一件事:搞清楚你到底有什么 第二件事:想清楚什么时候买,买多少 第三件事:把东西放在该放的地方 第四件事:定期清理不动销的货 写在最后 之前和一些做企业的朋友聊天,很多人提到库存管理&#x…...

ADS2016如何找到SmithChartMatch

关于我找这个器件找了两周也没找到这件事……终于被我捣鼓出来了。软件:ADS2016前情:我的元件库里无论如何都找不到第一步:Tools→SmithChart第二步:选择Palette第三步:在左边面板里弹出的元件中就可以看到我们需要的S…...

xStocks.fi:DeFi 领域的代币化股票与 ETF 创新

## 前言随着去中心化金融(DeFi)的不断演进,传统金融资产与区块链技术的融合成为新的焦点。xStocks.fi 正是这一趋势的杰出代表,它将全球最受欢迎的美国股票和交易所交易基金(ETF)代币化,引入链上…...

代码筑梦者:数字世界的隐秘建筑师

代码筑梦者:程序员的隐秘世界在数字时代的星河里,有这样一群人——他们的指尖在键盘上飞舞,用0和1编织着世界的另一重维度。程序员,这群现代社会的代码筑梦者,他们的工作早已超越了简单的“写代码”,而是成…...

量化交易系列(八):OKX 搞了个 AI Trade Agent,是普通人的机会还是手续费收割机?

量化交易系列(八):OKX 搞了个 AI Trade Agent,是普通人的机会还是手续费收割机? 导语 2026 年 3 月,OKX 官宣推出 Agent Trade Kit——一款基于 MCP 协议的开源 AI 交易工具集,提供 83 个工具,覆盖行情发现、策略执行、期权交易、算法委托、Bot 策略管理全链路,还内…...

PAT 乙级 1034

本题最关键就是要思路清晰的写函数,函数只是处理,分子和分母,把 分子/分母 写回正确的模式。还有要注意,所有的整数定义都要写 long long,scanf 要写 %lld,在最开始定义 a b 的时候也要这么写,因…...

Win10 -> Win11 升级机制 导致应用不可用

一、问题 我今天刚升级了系统(从win10到win11)现在的问题是:我在vscode,kiro等软件想使用anconda环境,使用conda init命令显示: Unable to create process using H:\myMinAnconda\python.exe H:\myMinAnco…...

Dubbo 核心知识点速记

一、工程结构:为什么要拆三个模块整个项目拆成三个 Maven 子模块,由一个父 POM 聚合管理:dubbo-demo(父工程,packagingpom) ├── dubbo-api → 接口契约层 ├── dubbo-provider → 服务提供者…...

第三篇:从零搭建 Spring Boot 3 + Dubbo 3 + ZooKeeper 微服务实战 -- 消费者 模块

创建 dubbo-consumer 模块&#xff08;服务消费者&#xff09;Consumer 通过 ZooKeeper 发现 Provider&#xff0c;发起 RPC 调用&#xff0c;并通过 REST 接口将结果暴露给前端或外部系统。5.1 pom.xml&#xff0c;与 Provider 模块的依赖基本一致。dubbo-consumer/pom.xml<…...

物联网面试必过要点

要是能熟记以下知识点&#xff0c;再加上自身的项目经验&#xff0c;过个面试&#xff0c;问题不大。指针定义一个指向指针的的指针&#xff0c;它指向的指针是指向一个整型数 int **a; 一个有10个指针的数组&#xff0c;该指针是指向一个整型数的 int *a[10]; 一个指向有10个整…...

完整博文目录

Java 集合 JDK 常用集合类源码阅读 &#x1f31f; 并发 JUC 并发包源码阅读 &#x1f31f;ThreadPoolExecutor 与常用线程池volatile, synchronized 和锁 基础扩展 String 字符串浅析反射机制异常机制 数据库 HBase HBase原理 &#x1f31f; MySQL 事务&#xff0c;隔离…...

第一篇:从零搭建 Spring Boot 3 + Dubbo 3 + ZooKeeper 微服务实战

技术栈速览组件版本说明Spring Boot3.2.6基础框架Apache Dubbo3.3.4RPC 框架ZooKeeper3.9.2注册中心&#xff08;Docker 部署&#xff09;Curator5.xZK 客户端&#xff08;由 Starter 管理&#xff09;JDK17Spring Boot 3 最低要求项目目录结构先把整体结构了然于胸&#xff0c…...