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

PTA 树与二叉树 2 根据先序+中序遍历序列构造二叉树

作者 张鏖烽单位 湖南工程学院计算机与通信学院从键盘输入一个二叉树的先序遍历序列和中序遍历序列编程实现下列函数1CreateBT_PI(pre,in,n):根据先序遍历序列*pre和中序遍历*in构造二叉链树2DisplayBT(bt):以括号表达式的形式输出二叉链树bt3LevelNode(bt,x,h):求二叉链树中值等于x的节点的层次 hx不在树中返回04PrintLeaf(bt):输出二叉链树的所有叶子节点函数接口定义BTNode * CreateBT_PI(char *pre,char *in,int n);//根据先序遍历和后序遍历序列构造二叉链树 void DisplayBT(BTNode *b); //以括号表达式形式输出二叉链树 int LevelNode(BTNode *b,char x,int h);//找到等于x的结点后h为其层次否则为0 void PrintLeaf(BTNode *b);//输出二叉链树的所有叶子节点其中*pre为先序遍历序列指针*in为中序遍历序列指针n为遍历序列的长度x为键盘输入的待查找节点字符h为节点的层次裁判测试程序样例#includestdio.h #includemalloc.h #includestring.h #define MaxSize 100 typedef struct Node{ char data; struct Node *lchild,*rchild; }BTNode; BTNode * CreateBT_PI(char *pre,char *in,int n);//创建二叉链树 void DisplayBT(BTNode *b); //以括号表达式形式输出二叉链树 int LevelNode(BTNode *b,char x,int h);//找到等于x的结点后h为其层次否则为0 void PrintLeaf(BTNode *b);//输出二叉链树的所有叶子节点 int main() { char Prectr[MaxSize],Inctr[MaxSize]; char *pre,*in; char ch; int n,h1,level; BTNode *bt; scanf(%s,Prectr); scanf(%s,Inctr); getchar(); scanf(%c,ch); prePrectr; nstrlen(Prectr); inInctr; btCreateBT_PI(pre,in,n); levelLevelNode(bt,ch,h); printf(\n二叉树的括号表达式); DisplayBT(bt); if(level0) printf(\n节点%c 在二叉树的第%d层,ch,level); else printf(\n二叉树没有等于%c的节点,ch); printf(\n二叉树的所有叶子节点); PrintLeaf(bt); return 0; } /* 请在这里填写答案 */输入样例在这里给出一组输入。例如第1行输入先序序列第2行输入中序序列第3行输入要查找的节点数据chGBDAHCEFJIK ADHBCGJFEIK D输出样例在这里给出相应的输出。例如二叉树的括号表达式G(B(D(A,H),C),E(F(J),I(,K))) 节点D 在二叉树的第3层 二叉树的所有叶子节点A H C J K参考代码BTNode *CreateBT_PI(char *pre,char *in,int n){ if(n0) return NULL; BTNode *r(BTNode*)malloc(sizeof(BTNode)); r-datapre[0]; int k; for(k0;kn;k){ if(*pre*(ink)) break; } r-lchildCreateBT_PI(pre1,in,k); r-rchildCreateBT_PI(pre1k,ink1,n-k-1); return r; } void DisplayBT(BTNode *b){ if(b!NULL){ printf(%c,b-data); if(b-lchild!NULL||b-rchild!NULL){ printf((); DisplayBT(b-lchild); if(b-rchild!NULL){ printf(,); DisplayBT(b-rchild); } printf()); } } } int LevelNode(BTNode *b,char x,int h){ if(bNULL) return 0; if(b-datax) return h; int leftLevelNode(b-lchild,x,h1); if(left0) return left; return LevelNode(b-rchild,x,h1); } void PrintLeaf(BTNode *b){ static int f1; if(!b) return; if(!b-lchild!b-rchild){ if(!f) printf( ); printf(%c,b-data); f0; }else{ PrintLeaf(b-lchild); PrintLeaf(b-rchild); } }

相关文章:

PTA 树与二叉树 2 根据先序+中序遍历序列构造二叉树

作者 张鏖烽单位 湖南工程学院计算机与通信学院从键盘输入一个二叉树的先序遍历序列和中序遍历序列,编程实现下列函数:(1)CreateBT_PI(pre,in,n):根据先序遍历序列*pre和中序遍历*in构造二叉链树;(2&#x…...

直播分发新范式:obs-multi-rtmp的资源池化技术与全场景应用

直播分发新范式:obs-multi-rtmp的资源池化技术与全场景应用 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 一、技术内核:从资源竞争到协同的架构革新 1.1 核心…...

Arbitrary scale atmospheric downscaling with mixture of implicit neural networks trained on fixed

Arbitrary-scale atmospheric downscaling with mixture of implicit neural networks trained on fixed-scale data摘要大气数据降采样是推进气候和天气研究的关键,它解决了对高分辨率区域洞察日益增长的需求,同时提高了天气预报和气候建模等关键应用的…...

Markdown浏览器插件:让文档预览效率提升300%的零配置工具

Markdown浏览器插件:让文档预览效率提升300%的零配置工具 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer 你是否曾遇到过这样的困境:下载的本地Markdown文…...

百度网盘秒传脚本:文件传输效率工具的深度解析与应用指南

百度网盘秒传脚本:文件传输效率工具的深度解析与应用指南 【免费下载链接】rapid-upload-userscript-doc 秒传链接提取脚本 - 文档&教程 项目地址: https://gitcode.com/gh_mirrors/ra/rapid-upload-userscript-doc 1.溯源文件分享痛点:传统模…...

突破小爱音箱音乐限制:XiaoMusic让你的智能音箱自由播放任何歌曲

突破小爱音箱音乐限制:XiaoMusic让你的智能音箱自由播放任何歌曲 【免费下载链接】xiaomusic 使用小爱同学播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 一、被束缚的音乐体验:当智…...

VR禁毒学习机:禁毒宣传数字化的创新尝试

在数字化时代,禁毒教育不再局限于课堂讲解和图文展板,虚拟现实(VR)技术的加入为这一领域注入了新的活力。VR禁毒学习机的出现,打破了传统教育的枯燥模式,以沉浸式、互动式的方式让体验者在虚拟环境中学习识…...

解决语音角色识别中的误识别与长会漂移问题(陌生人机制 + 稳定性规则)

在熙瑾会悟产品研发的时候,有以下能力:说话人识别(Speaker Identification)。简单说就是:系统不仅要把语音转成文字,还要知道 “是谁在说话”。这个能力在很多场景都会用到,比如:会议…...

OpenClaw Docker 部署 · 完整速查手册

OpenClaw Docker 部署 完整速查手册 适用:Docker 安装、排错、命令解释 制作时间:2026.03.13一、基础 Docker 命令 删除旧容器(重新部署必用) docker rm -f openclaw 查看容器日志(看报错/运行状态) dock…...

FanControl风扇控制进阶指南:从问题诊断到智能调节的全面解决方案

FanControl风扇控制进阶指南:从问题诊断到智能调节的全面解决方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_…...

如何构建OpenCore兼容的Hackintosh硬件系统?全面的硬件选择与配置指南

如何构建OpenCore兼容的Hackintosh硬件系统?全面的硬件选择与配置指南 【免费下载链接】OpenCore-Install-Guide Repo for the OpenCore Install Guide 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Install-Guide 构建Hackintosh系统最核心的挑战…...

倒立摆的优雅舞步:用代码解读事件触发模型的魔法

【模型参考文献】事件触发模型 基于倒立摆matlab仿真 模型为状态空间形式 事件触发机制可自行调节参数在控制理论的王国里,倒立摆是一个令人着迷的存在。它就像一个不稳定的醉汉,随时可能倾倒,却又能在控制算法的引导下优雅起舞。今天&#x…...

Windows快捷键失效?3个维度彻底解决热键冲突

Windows快捷键失效?3个维度彻底解决热键冲突 【免费下载链接】hotkey-detective A small program for investigating stolen hotkeys under Windows 8 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 当你的设计软件快捷键突然失灵&#xff…...

革新性macOS应用管理:告别命令行的图形化解决方案

革新性macOS应用管理:告别命令行的图形化解决方案 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 在macOS系统管理中,应用维护往往意味着与终端命令的长…...

2026年3月份大更新来了!小黄鸭补帧3.2.2 AI插帧软件分享,小黄鸭补帧 小黄鸭使用教程losslessscaling使用教程!胎教级别!

哈喽 大家好 今天给大家分享一下,如何用这个小黄鸭软件,让我们的老显卡再战十年! 为什么叫它小黄鸭拼好针呢?因为它可以把游戏或者视频的帧数,通过补帧的方式变得非常高,让老显卡也能流畅跑起来&#xff0c…...

从100kHz到6GHz的开源突破:LibreVNA矢量网络分析方案全解析

从100kHz到6GHz的开源突破:LibreVNA矢量网络分析方案全解析 【免费下载链接】LibreVNA 100kHz to 6GHz 2 port USB based VNA 项目地址: https://gitcode.com/gh_mirrors/li/LibreVNA LibreVNA是一款面向射频工程师、电子爱好者和科研人员的开源矢量网络分析…...

SuperPNG使用难题攻克指南:从安装到优化的3个实战技巧

SuperPNG使用难题攻克指南:从安装到优化的3个实战技巧 【免费下载链接】SuperPNG SuperPNG plug-in for Photoshop 项目地址: https://gitcode.com/gh_mirrors/su/SuperPNG SuperPNG是一款专为Photoshop打造的免费插件,核心功能是生成更高质量的P…...

Umi-OCR多引擎协同策略:实现98%文档识别准确率的实战指南

Umi-OCR多引擎协同策略:实现98%文档识别准确率的实战指南 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/G…...

简简单单三步,让你成功更换centos7 的YUM源

centos7在2024年6月30日,生命周期结束,官方不再进行支持维护,官方的YUM源也下线了,下线的方式是使yum的域名不解析。所以现在需要配置国内的YUM源 1.打开源文件:打开CentOS-Base.repo sudo vi /etc/yum.repos.d/CentOS-Base.repo 2.替换源文件…...

扣子(Coze)实战:语文课本突然不枯燥了!输入诗名,Coze一键让古诗词“活”过来

大家好,我是吾鳴。专注于分享提升工作与生活效率的工具,无偿分享AI领域相关的精选报告,持续关注AI的前沿动向。 最近发现一个很有意思的赛道,那就是AI古诗词赛道,这个赛道的内容就是语文课本中的一篇枯燥的文言文古诗词…...

Universal Pokemon Randomizer ZX:重新定义宝可梦游戏体验的开源工具

Universal Pokemon Randomizer ZX:重新定义宝可梦游戏体验的开源工具 【免费下载链接】universal-pokemon-randomizer-zx Public repository of source code for the Universal Pokemon Randomizer ZX 项目地址: https://gitcode.com/gh_mirrors/un/universal-pok…...

【程序员转行】AI+嵌入式风口来袭,程序员/小白必看的职业突围指南

人工智能的浪潮正全面重塑全球就业市场,其中AI与嵌入式领域的人才需求呈现爆发式增长态势,成为就业市场的“香饽饽”。未来几年,就业趋势将持续向AI、大数据领域聚拢,人机协同模式普及、培养AI难以替代的核心能力、坚持终身学习&a…...

当GitHub界面成为协作障碍:如何用87KB插件实现全界面中文改造

当GitHub界面成为协作障碍:如何用87KB插件实现全界面中文改造 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 问题&#x…...

MATLAB环境下基于傅里叶分析的3级自适应信号分解方法

MATLAB环境下一种基于傅里叶分析的自适应信号分解方法。 该方法为数据驱动的傅里叶分解方法,分解的前3级的能量分布,分解的前3级基函数,分解的前3级模态分量如下。 算法可迁移至金融时间序列,地震信号,语音信号&#x…...

航空航天需求:Vue3如何扩展WebUploader支持三维模型文件的分片校验?

网工大三党文件上传救星:原生JS实现10G大文件上传(Vue3IE8兼容) 兄弟,作为刚入坑网络工程的山西老狗,我太懂你现在的处境了——老师要10G大文件上传的毕业设计,网上找的代码全是“断头路”,后端…...

告别手动描点:WebPlotDigitizer让图像数据提取效率提升10倍的实战指南

告别手动描点:WebPlotDigitizer让图像数据提取效率提升10倍的实战指南 【免费下载链接】WebPlotDigitizer Computer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/web/WebPlotDigitizer 在科…...

拥有资产,而非出售时间:这才是致富的唯一捷径!

一、财富与赚钱1. 财富不是钱,而是能在你不工作时仍然赚钱的资产。 解释:真正的财富是股票、公司股权、知识产权、软件等可以持续产生价值的东西,而不是一次性的工资收入。2. 想致富就要拥有股权,而不是只出售时间。 解释&#xf…...

夜话测试管理:一位测试负责人的深夜思考与破局之道

关注 霍格沃兹测试学院公众号,回复「资料」, 领取人工智能测试开发技术合集深夜时分,当大多数人已进入梦乡,一位测试负责人却仍在为团队面临的诸多挑战而思索。在霍格沃兹测试开发学社的私教服务中,这样的深夜对话并不少见。今晚&…...

Horos医疗影像平台:开源解决方案的技术解析与应用指南

Horos医疗影像平台:开源解决方案的技术解析与应用指南 【免费下载链接】horos Horos™ is a free, open source medical image viewer. The goal of the Horos Project is to develop a fully functional, 64-bit medical image viewer for OS X. Horos is based up…...

XHS-Downloader:赋能创作者的小红书无水印素材获取工具

XHS-Downloader:赋能创作者的小红书无水印素材获取工具 【免费下载链接】XHS-Downloader 免费;轻量;开源,基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader …...