7-1 后序和中序构造二叉树

分数 5

作者 唐艳琴

单位 中国人民解放军陆军工程大学

本题目要求用后序序列和中序序列构造一棵二叉树(树中结点个数不超过10个),并输出其先序序列。

输入格式:

在第一行中输入元素个数。

第二行中输入后序序列,用空格分隔。

第三行中输入中序序列,用空格分隔。

输出格式:

输出此二叉树的先序序列,用空格分隔,最后也有一个空格。

输入样例:

5
20 40 50 30 10
20 10 40 30 50

输出样例:

10 20 30 40 50 

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

C程序如下:

#include <stdio.h>
#include <stdlib.h>// 定义二叉树节点结构体
typedef struct BTree {int data;  // 节点数据struct BTree* lchild, * rchild;  // 左右子树指针
} BTree, * Btree;// 函数声明
Btree createInorder(int* post, int* mid, int n);
void PreorderTravel(Btree tree);int main() {int n;// 输入节点数scanf("%d", &n);int post[n];  // 后序遍历数组int mid[n];   // 中序遍历数组// 输入后序遍历数组for (int i = 0; i < n; i++) {scanf("%d", &post[i]);}// 输入中序遍历数组for (int i = 0; i < n; i++) {scanf("%d", &mid[i]);}// 创建二叉树Btree root = createInorder(post, mid, n);// 先序遍历二叉树PreorderTravel(root);return 0;
}// 根据后序和中序遍历数组创建二叉树
Btree createInorder(int* post, int* mid, int n) {if (n == 0) {// 如果没有节点,返回 NULLreturn NULL;}if (n == 1) {// 如果只有一个节点,创建该节点并返回Btree root = (Btree)malloc(sizeof(BTree));root->data = post[0];root->lchild = NULL;root->rchild = NULL;return root;}int rootValue = post[n - 1];  // 后序遍历数组的最后一个元素是根节点int index = 0;// 在中序遍历数组中找到根节点的位置while (index < n && mid[index] != rootValue) {index++;}// 创建根节点Btree root = (Btree)malloc(sizeof(BTree));root->data = rootValue;// 递归创建左子树和右子树root->lchild = createInorder(post, mid, index);root->rchild = createInorder(post + index, mid + index + 1, n - index - 1);return root;
}// 先序遍历二叉树并打印节点数据
void PreorderTravel(Btree tree) {if (tree == NULL) {// 如果节点为空,返回return;}// 打印节点数据printf("%d ", tree->data);// 递归遍历左子树PreorderTravel(tree->lchild);// 递归遍历右子树PreorderTravel(tree->rchild);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 PNPM 从 0 搭建 monorepo,测试并发布

1 目标 通过 PNPM 创建一个 monorepo&#xff08;多个项目在一个代码仓库&#xff09;项目&#xff0c;形成一个通用的仓库模板。 这个仓库既可以用于公司存放和管理所有的项目&#xff0c;也可以用于将个人班余的所有积累整合其中。 这里以在 monorepo 项目中搭建 web compon…

ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的MPAM

安全之安全(security)博客目录导读 关于RME的MPAM变化的完整定义见在《Arm Architecture Reference Manual Supplement, Memory System Resource Partitioning and Monitoring (MPAM), for A-profile architecture》中详细说明。 实现RME的处理元件(PE)能够生成一个2位的MPAM_…

x64-linux下在vscode使用vcpkg

1.使用vscode远程连接上对应的linux &#xff0c;或者直接在图形化界面上使用。 2.安装vcpkg 插件&#xff0c;然后打开插件设置。 注意&#xff1a;defalut和host的主机一定和你自己的主机一致&#xff0c;且必须符合vcpkg三元组格式&#xff0c;其中你可以选择工作台的设置&a…

揭秘!5大策略让广告变现长久有效

在数字化时代的浪潮下&#xff0c;广告变现作为自媒体和APP开发者重要的收入来源&#xff0c;越来越受到重视。 但如何让这种变现方式长久持续&#xff0c;成为许多内容创作者与平台运营者思考的问题。 本文旨在探讨广告变现的持久之道&#xff0c;通过分析前端展示、合规性、…

OpenCV特征匹配

1、OpenCV Brute-Force匹配器 Brute-Force匹配器的匹配方法非常简单&#xff0c;输入两张图像所分别对应的特征&#xff08;特征点坐标与特征点域对应的描述子&#xff09;&#xff0c;循环遍历两幅图像中的特征&#xff0c;计算第一幅图像与第二幅图像之间每个特征点之间的距…

【日记】第一次养植物,没什么经验……(781 字)

正文 前两天梦见灵送的几盆植物全都死掉了。梦里好伤心。醒来与她说这件事&#xff0c;她宽慰我说&#xff0c;梦都是反着的&#xff0c;肯定能活得很好的。于是忽然记起昨天给植物换水时&#xff0c;文竹的根居然从花盆底部伸吊了出来&#xff0c;以前都没有这种情况来着&…

ArcGIS Pro 3.0加载在线高德地图

1、打开ArcGIS Online官网&#xff0c;登录自己的账号&#xff0c;登录后效果如下图所示 官网地址&#xff1a;https://www.arcgis.com/home/webmap/viewer.html 2、点击Add&#xff0c;选择Add Layer from Web&#xff0c;如下图所示 3、在显示的Add Layer from Web页面内&am…

RabbitMQ-Stream(高级详解)

文章目录 什么是流何时使用 RabbitMQ Stream&#xff1f;在 RabbitMQ 中使用流的其他方式基本使用Offset参数chunk Stream 插件服务端消息偏移量追踪示例 示例应用程序RabbitMQ 流 Java API概述环境创建具有所有默认值的环境使用 URI 创建环境创建具有多个 URI 的环境 启用 TLS…

c#调用c++dll方法

添加dll文件到debug目录&#xff0c;c#生成的exe的相同目录 就可以直接使用了&#xff0c;放在构造函数里面测试

PostgreSQL的扩展(extensions)-常用的扩展-pg_stat_monitor

PostgreSQL的扩展&#xff08;extensions&#xff09;-常用的扩展-pg_stat_monitor pg_stat_monitor 是 PostgreSQL 的一个扩展&#xff0c;它提供了一种先进的监控和统计 SQL 查询的方式&#xff0c;相比于标准的 pg_stat_statements&#xff0c;它提供了更丰富和详细的查询统…

手机流畅运行470亿参数大模型,上交大发布PowerInfer-2推理框架,性能提升29倍

苹果一出手&#xff0c;在手机等移动设备上部署大模型迅速成为行业焦点。 目前&#xff0c;移动设备上运行的模型相对较小&#xff08;苹果的是3B&#xff0c;谷歌的是2B&#xff09;&#xff0c;并且消耗大量内存&#xff0c;这在很大程度上限制了其应用场景。 即使是苹果&…

linux中: IDEA 由于JVM 设置内存过小,导致打开项目闪退问题

1. 找到idea安装目录 由于无法打开idea&#xff0c;只能找到idea安装目录 在linux(debian/ubuntu)中idea的插件默认安装位置和配置文件在哪里? 默认路径&#xff1a; /home/当前用户名/.config/JetBrains/IntelliJIdea2020.具体版本号/options2. 找到jvm配置文件 IDEA安装…

MNIST手写字符分类-卷积

MNIST手写字符分类-卷积 文章目录 MNIST手写字符分类-卷积1 模型构造2 训练3 推理4 导出5 onnx测试6 opencv部署7 总结 在上一篇中&#xff0c;我们介绍了如何在pytorch中使用线性层ReLU非线性层堆叠的网络进行手写字符识别的网络构建、训练、模型保存、导出和推理测试。本篇文…

北京Web前端薪资揭秘:从行业趋势到个人成长

北京Web前端薪资揭秘&#xff1a;从行业趋势到个人成长 在科技飞速发展的今天&#xff0c;Web前端作为互联网行业的核心岗位之一&#xff0c;其薪资水平一直备受关注。尤其是在北京这样的一线城市&#xff0c;Web前端工程师的薪资更是成为了人们热议的话题。那么&#xff0c;北…

Redis高性能原理:Redis为什么这么快?

目录 前言&#xff1a; 一、Redis知识系统观 二、Redis为什么这么快&#xff1f; 三、Redis 唯快不破的原理总结 四、Redis6.x的多线程 前言&#xff1a; Redis 为了高性能&#xff0c;从各方各面都进行了优化。学习一门技术&#xff0c;通常只接触了零散的技术点&#xff…

解决linux jenkins要求JDK版本与项目版本JDK不一致问题

背景–问题描述&#xff1a; 新入职公司&#xff0c;交接人说jenkins运行有问题&#xff0c;现在都是手动发布&#xff0c;具体原因让我自己看&#xff08;笑哭&#xff09;。我人都蒙了&#xff0c;测试环境都手动发布&#xff0c;那不是麻烦的要死&#xff01; 接手后&am…

代码随想录算法训练营第36天 [860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球 ]

代码随想录算法训练营第36天 [860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球 ] 一、860.柠檬水找零 链接: 代码随想录. 思路&#xff1a;十块只能找五块&#xff0c;二十能找十块五块和三个五块&#xff0c;优先消耗十块 做题状态&#xff1a;看解析后做出…

推荐几款短链接工具系统软件

1、C1N短网址(c1n.cn) 为了提升你的品牌并吸引新的受众&#xff0c;C1N短网址可以帮助你以最简单的方式进行科学分析、决策和促进变革。帮助您真正了解客户并促进转型&#xff0c;C1N短网址&#xff0c;它不仅是一种工具&#xff0c;也是一种专业服务。该品牌成立于2018年&…

引入tinyMCE富文本框在vue3中的使用

实现效果&#xff1a; 官网地址&#xff1a;TinyMCE 7 Documentation | TinyMCE Documentation 1.下载依赖&#xff08;我使用的版本是5.0 目前最新版本到7了&#xff09; pnpm/npm install tinymce5.0.0 -S pnpm/npm install tinymce/tinymce-vue -S 2.在public文件夹下…

数字化制造案例分享以及数字化制造能力评估(34页PPT)

资料介绍&#xff1a; 通过全面的数字化企业平台和智能制造技术的应用&#xff0c;制造型企业不仅提升了自身的竞争力&#xff0c;也为整个制造业的数字化转型提供了借鉴。同时&#xff0c;数字化制造能力的评估是企业实现数字化转型的关键环节&#xff0c;需要从技术变革、组…