PAT--L2-006树的遍历------由遍历序列恢复二叉树

由俩中遍历序列恢复二叉树 由中序和先序序列恢复二叉树 由中序和后序序列恢复二叉树 立即下载

来总结一下:
1)由两种序列恢复二叉树,既可以链式存储,也可以顺序存储,为方便输出,一般都是采用顺序存储,所以在恢复过程中,直接采用顺序存储。
2)记住最重要的一点,存储二叉树的数组要足够大,因为虽然结点不是特别的多,但是顺序存储特别浪费空间,否则会发生段错误。

题目描述:
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。

输入格式:
输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。

输出格式:
在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。

输入样例:
7
2 3 1 5 7 6 4
1 2 3 4 5 6 7
输出样例:
4 1 6 3 5 7 2

题目大意:
由后序和中序恢复二叉树,最后层次输出。
主要代码链接------>通过先序,中序,后序中的两种来还原二叉树

代码如下:

#include<iostream>
#include<algorithm>
using namespace std;
int n,a[100001],p=0;
void inpost(int in[],int i,int j,int post[],int h,int k,int p)
{
    a[p]=post[k];
    int m=i;
    while(in[m]!=post[k]) m++;
    if(m==i) a[2*p]=-1;
    else inpost(in,i,m-1,post,h,m+h-1-i,2*p);
    if(m==j) a[2*p+1]=-1;
    else inpost(in,m+1,j,post,k-j+m,k-1,2*p+1);
}
int main()
{
    scanf("%d",&n);
    fill(a,a+100001,-1);
    int in[31],post[31],flag=0;
    for(int i=0;i<n;i++) scanf("%d",&post[i]);
    for(int i=0;i<n;i++) scanf("%d",&in[i]);
    inpost(in,0,n-1,post,0,n-1,1);
    for(int l=0;;l++){
        if(a[l]!=-1){
            flag++;
            flag==n?printf("%d",a[l]):printf("%d ",a[l]);
        }
        if(flag==n) break;
    }
    return 0;
}
二叉树遍历序列还原 给出二叉树的中序遍历序列和后序遍历序列,编程还原该二叉树。 输入:   第1行为二叉树的中序遍历序列   第2行为二叉树的后序遍历序列 输出:   二叉树的按层遍历序列 立即下载

相关推荐

利用两种遍历结果恢复二叉树并打印

含有源代码和实验报告。简单人机交互选择要输入的遍历结果,然后利用输入的遍历结果恢复二叉树,并按照缩进式打印二叉树。

算法数据结构基础——二叉树的还原(基于遍历序列还原二叉树)

算法数据结构基础——二叉树的还原(基于遍历序列还原二叉树)

学习中 847

恢复二叉树算法

由遍历序列恢复二叉树 ① 输入: 遍历序列 ② 输出: 输出二叉树形态或输出二叉树的三种遍历序列 ③ 程序所能达到的功能: 根据输入的先序遍历序列和中序遍历序列判断二叉树形态输出后序遍历序列。 根据输入的中序遍历序列和后序遍历序列判断二叉树形态输出先序遍历序列。 ④ 测试数据: 字符数:3 字符:a 1 、b 2、 c 3 字符串:abca 编码:1011010

数据结构---遍历还原二叉树

还原二叉树

weixin_67452474的博客 2505

TB6600驱动器共阴共阳接法傻傻分不清?一张图搞定STM32与42步进电机的接线避坑指南

本文详细解析了TB6600驱动器共阴共阳接法的本质区别,提供了STM32与42步进电机的高效连接方案。通过实际案例和接线图示,帮助读者避免常见错误,确保驱动器与MCU的安全连接,提升项目稳定性。

weixin_28710999的博客 246

将pytorch的权值矩阵量化为定点数补码并导入FPGA中

Xilinx FPGA实现LSTM算法时对ROM的初始化 将pytorch框架的权重矩阵以定点数补码的形式导入到FPGA中 文章目录Xilinx FPGA实现LSTM算法时对ROM的初始化1. pytorch框架中的LSTM2. 初始化一个RNN模型 3. 初始化ROM的coe文件格式 4. 将参数转换为补码,并且输出到coe文件 5. 配置一个ROM 6. 结论7. 代码 1. pytorch框架中的LSTM pytorch框架将LSTM算法中的八个权值矩阵连接成两个矩阵,假设要导入的LSTM网络的输

随缘分享 4528

5. 从遍历序列恢复二叉树

一,什么样的序列组合才能恢复一棵二叉树 ? 1,前序+中序 2,后序+中序 前序遍历的结果 [根节点, [左子树], [右子树]] 中序遍历的结果 [[左子树], 根节点, [右子树]] 后序遍历的结果 [[左子树], [右子树], 根节点] 所以若要恢复一棵二叉树,必须要包含 "中序遍历" 的结果,因为只有中序遍历中的左子树和右子树是分开的。 ...

没戴面具的小丑 1561

大一Python之循环解决实际问题

pythin之循环解决实际问题

weixin_66263546的博客 2288

遍历序列还原二叉树

二叉树可以由中序序列和前序序列,或者中序序列和后序序列唯一还原一棵二叉树。 算法步骤:1、先序(后序)找根;2、中序分左右;3、递归还原 详细步骤: 1、建立数的结点类,有3个成员,data是char类型存放该结点的值,lchild和rchild是指针类型,用于指向该结点的左右孩子结点; 2、输入树中结点的个数,并输入先序遍历序列和后序遍历序列,用数组存储; 3、递归创建树,返回值为Node*类型,用于返回根;参数为先序序列数组、中序序列数组和数组的长度len,递归结束条件...

qq_48988844的博客 1333

基于单片机的智能温控风扇设计

该智能温控风扇系统的设计目标是根据环境温度自动控制风扇的转速或开关状态,确保用户始终处于舒适的温度范围内。实时温度监测:通过温度传感器(如DS18B20或DHT22)实时监控环境温度。风扇控制:根据温度变化自动调节风扇的转速,温度过高时风扇加速,温度适中时风扇转速降低,达到节能与舒适平衡。LCD显示:通过LCD屏幕实时显示温度信息。无线通信:通过Wi-Fi或蓝牙模块将温度数据发送至手机或云平台,支持远程控制风扇的开关或调节转速。报警功能:温度过高或过低时,蜂鸣器发出警报,提示用户注意。

2201_76125393的博客 1159

图形推理2-四大类六提示

图形推理笔记2

小y的学习笔记 6746

数据结构——二叉树的恢复(先序遍历和中序遍历恢复、后序遍历和中序遍历恢复)

数据结构——二叉树的恢复(先序遍历和中序遍历恢复、后序遍历和中序遍历恢复)

x20020402的博客 1829

高性能算力中心 — RDMA — Overview

目录 文章目录目录RDMA基于以太网的 RoCE/RDMA 计算优化NVMeNVMe Over Fabrics基于以太网的 NVMe 存储优化 RDMA RDMA(Remote DMA,远程直接内存访问)是一种新的内存访问技术,RDMA 让计算机可以直接存取其他计算机的内存,而不需要经过 CPU 耗时的处理。RDMA 将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响。RDMA 技术的原理及其与 TCP/IP 架构的对比如下图所示。 InfiniBand(IB):从一开始就支持 R

烟云的计算 2366

由遍历序列恢复二叉树

由遍历序列恢复二叉树 PS:这里只介绍由先序序列和中序序列构造唯一二叉树 举一个例子: 由: 先序序列为:ABCDEFGHI 中序序列为:BCAEDGHFI 恢复该二叉树 首先,由先序序列可知,结点A是二叉树根结点。其次,根据中序序列,在A之前所有的结点都是根结点的左子树的结点,在A之后的结点都是根结点右子树的结点,由此就是下图的a) 的状态。 然后在对A左子树进行分解,得知B是左子树的根结点...

serendipity的博客 3360

第 13 章:Spring AI Alibaba MCP 与 Nacos3 — 企业级MCP服务

理解Spring AI Alibaba 框架下的MCP服务与Nacos注册中心整合的必要性,学会Spring AI Alibaba-基于Nacos的MCP实现方法

paopao_wu的专栏 788

运动控制软件:Siemens Sinamics二次开发_(6).通信接口与协议详解

PROFIBUSPROFINETModbus TCPCANopenEtherCAT每种通信接口都有其特定的应用场景和优势。选择合适的通信接口可以显著提高系统的性能和可靠性。在选择通信协议时,需要根据具体的应用场景和需求综合考虑。每种通信协议都有其特定的优势和局限性,因此在设计运动控制系统时,应选择最适合的协议,以确保系统的性能、可靠性、成本和维护性。通过以上对比和分析,希望开发者能够更好地理解和选择适合的通信接口和协议,从而优化运动控制系统的开发和应用。

2401_87715305的博客 901

由遍历序列还原二叉树结构

本文讲述了由遍历序列还原二叉树结构的方法

Gavin 8973

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

14.二叉树遍历序列还原

14.二叉树遍历序列还原 成绩 10 开启时间 2018年11月5日 星期一 18:55 折扣 0.8 折扣时间 2018年11月25日 星期日 23:55 允许迟交 否 关闭时间 2018年12月5日 星期三 23:55 给出二叉树的中序遍历序列和后序遍历序列,编程还原该二叉树。 输入:   第1行为二叉树的中序遍历序列   ...

Jiahua's blog 1330

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

由遍历序列还原二叉树

对于给定的两种二叉树遍历序列,只有当给定的序列中有中序遍历序列时才能还原二叉树,换言之,如果给定的是先序和后序遍历序列则不能还原二叉树。 比如说,当给定了先序和中序遍历序列时: 先序序列的第一个一定是根节点,然后中序序列就被分成了两部分,前部分是左子树,后部分是右子树,左子树序列和右子树序列又可以根据先序序列中的顺序继续细分下去。最后得到一棵完整的二叉树...

EatherToo的博客 1742

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

还原二叉树遍历序列

已知一颗二叉树后序序列为 debfca, 中序序列为dbeafc, 则先序遍历为:abdecf            a        /       \     b           c   /    \       / d     e    f   -----------------------------------------------------------------...

宁静致远 1600

根据遍历序列还原二叉树

首先看一道PTA上的题目: 7-1 根据后序和中序遍历输出先序遍历 (25 分) 本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。 输入格式: 第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。 输出格式: 在一行中输出Preorder:以及该树的先...

weixin_42606045的博客 1140

数据结构实验之二叉树四:(先序中序)还原二叉树

Problem Description 给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。 Input 输入数据有多组,每组数据第一行输入1个正整数N(1 <= N <= 50)为树中结点总数,随后2行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区分大小写)的字符串。 Output 输出一个整数,即该二叉树的高度。 Sample Input 9 AB...

ACMerdsb的博客 367

从前序+中序或者后序+中序序列中恢复二叉树过程

给出前序遍历和中序遍历,如何绘制出二叉树: 如果给出遍历产生的一串字符,不容易确定各个字符在树中的具体位置,因而需要两个遍历串相结合才能画出一棵二叉树。 如,给出前序遍历ADFGHKLPQRWZ,中序遍历GFHKDLAWRQPZ。 其具体寻找过程如下: 其中矩形内表示当前节点的左右子树的元素,圆圈内为当前节点,矩形内表示的是当前节点在该子树中下一个访问的节点。 首先在前序序列中找到第一个访

LDL 6166

遍历序列恢复二叉树

若已知结点的先序序列和中序序列,能确定一颗二叉树 若已知结点的中序序列和后序序列,也能确定一颗二叉树 算法思想: 由先序序列和中序序列恢复二叉树的递归思想: 先根据先序序列第一个结点确定二叉树的根结点,然后在中序序列中查找到该元素,根据该元素在中序序列中的位置,确定根结点的左,右子树的中序序列,再在先序序列中确定左,右子树的先序序列,最后由左子树的先序序列与中序序列建立左子

Month的博客 2万+

PAT--L2-019 悄悄关注

题目描述: 新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对其他用户的点赞情况,扒出有可能被其悄悄关注的人。 输入格式: 输入首先在第一行给出某用户的关注列表,格式如下: 人数N 用户1 用户2 …… 用户N 其中N是不超过5000的正整数,每个用户i(i=1, …, N...

sun9979的博客 2782
上一篇: PAT--L2-003 月饼------贪心算法
下一篇: PAT--L2-005集合相似度------set容器数组
Sun990o
博客等级 码龄9年 86粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值