PTA L2-006 树的遍历

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

输入格式:

输入第一行给出一个正整数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 <cstdio>
#include <iostream>
#include <algorithm>
#include <queue>using namespace std;int in[35];
int post[35];
typedef struct Node
{int val;struct Node* lchild;struct Node* rchild;
}Node;Node a[35];//提前申请好空间
int id;
//建树
Node* build_tree(int in[],int inl,int inr,int post[],int postl,int postr)
{if(inl > inr || postl > postr) return NULL;//Node* root = new Node;Node* root = &a[id++];root -> val = post[postr];int tmp = 0;for(int i = inl;i <= inr;i++)if(in[i] == post[postr]){tmp = i;break;}root -> lchild = build_tree(in,inl,tmp - 1,post,postl,tmp - inl - 1 + postl);root -> rchild = build_tree(in,tmp + 1,inr,post,postr - inr + tmp,postr - 1);return root;
}
void test(Node* root)
{if(root){test(root->lchild);test(root->rchild);cout << root->val << " ";}
}//层次遍历
void level_order(Node* root)
{queue<Node*> q;q.push(root);bool flag = 0;while(q.size()){Node* t = q.front();q.pop();if(flag) cout << " ";flag = 1;cout << t->val;if(t->lchild) q.push(t->lchild);if(t->rchild) q.push(t->rchild);}
}
int main()
{int n = 0;cin >> n;for(int i = 1;i <= n;i++) cin >> post[i];for(int i = 1;i <= n;i++) cin >> in[i];Node* root = build_tree(in,1,n,post,1,n);//test(root);level_order(root);return 0;
}

 不会的推荐看这个视频

L2-006 树的遍历 (25 分)_哔哩哔哩_bilibili

结果

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

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

相关文章

SD卡数据恢复全攻略,恢复sd卡丢失数据方法

当我们的SD卡&#xff08;Secure Digital Card&#xff09;遭遇数据丢失时&#xff0c;可能会让我们感到焦虑和困惑。不论是意外的删除、格式化&#xff0c;还是由于其他原因导致的数据丢失&#xff0c;恢复这些宝贵的数据都是至关重要的。本文将为你提供一份详尽的SD卡数据恢复…

STM32 GPIO的几种工作模式

介绍STM32 GPIO的几种工作模式 1、输出模式 STM32的引脚输出有两种方式&#xff1a; 1、推挽输出 2、开漏输出 1.1 推挽输出 当引脚设置为推挽输出时&#xff0c;P-MOS和N-MOS共同配合工作。 当使用HAL库 //该函数的作用就是将P-MOS导通&#xff0c;N-MOS关…

Java+SpringBoot+Vue:志愿服务的数字化之旅

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

守护无价数据:文件备份的重要性与实用策略

一、数据安全&#xff1a;为何文件备份至关重要 在数字化时代&#xff0c;我们的生活和工作越来越离不开电子设备与其中的文件数据。这些文件可能包含重要的工作文档、珍贵的家庭照片、个人的创意作品等&#xff0c;它们是我们回忆的载体&#xff0c;也是我们工作和创新的基石…

JavaScript入门学(Web APIs)

1.变量声明 2 DOM介绍 2.1 什么是DOM 2.2 DOM树 2.3 DOM对象&#xff08;重要&#xff09; 3.DOM&#xff08;文档对象模型&#xff09;-获取元素 3.1 获取匹配的第一个元素 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&…

GaN建模:强大但富有挑战性

来源&#xff1a;Modeling GaN: Powerful but Challenging&#xff08;10年&#xff09; 文章的研究内容 这篇文章主要研究了氮化镓&#xff08;GaN&#xff09;高电子迁移率晶体管&#xff08;HEMTs&#xff09;的建模问题。GaN HEMTs是微波频段高功率发射器设计中的关键技术…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的夜视行人检测系统(Python+PySide6界面+训练代码)

摘要&#xff1a;开发高效的夜视行人检测系统对于提升夜间安全和监控效能至关重要。本篇博客详尽介绍了如何利用深度学习技术搭建一个夜视行人检测系统&#xff0c;并提供了完整的实现代码。本系统采用了先进的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5进行了性能比较…

Qt 简约美观的加载动画 文本风格 第八季

今天和大家分享一个文本风格的加载动画, 有两类,其中一个可以设置文本内容和文本颜色,演示了两份. 共三个动画, 效果如下: 一共三个文件,可以直接编译 , 如果对您有所帮助的话 , 不要忘了点赞呢. //main.cpp #include "LoadingAnimWidget.h" #include <QApplic…

【风格迁移】对比度保持连贯性损失 CCPL

对比度保持连贯性损失 CCPL 提出背景解法&#xff1a;对比度保持连贯性损失&#xff08;CCPL&#xff09;对比学习&#xff1a;在无需标签的情况下有效学习区分特征应用CCPL的步骤 - 高层次描述应用CCPL的步骤 - 技术细节简单协方差变换&#xff08;SCT&#xff09;的详细过程逻…

linux之进程理解(1)

目录 1. 冯诺依曼体系结构 2. 操作系统(OS) 2.1 概念 2.2 设计OS的目的 2.3 定位 2.4 理解管理 3. 系统调用和库函数概念 4. 补充 1. 冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体…

集成2.5G/5G/10G高速率网络变压器的RJ45网口连接器产品特点介绍

Hqst华轩盛(石门盈盛)电子导读&#xff1a;集成2.5G/5G/10G高速率网络变压器的RJ45网口连接器产品特点介绍&#xff1a; 第一、 高速率&#xff1a;支持高达2.5Gbps、5Gbps和10Gbps的传输速率&#xff0c;能够满足高带宽的网络应用需求。 第二、 集成2.5G/5G/10G高速率网…

【Vue3】全局切换字体大小

VueUse 先安装VueUse <template><header><div class"left">left</div><div class"center">center</div><div class"right">right</div></header><div><button click"cha…