PTA L2-006 树的遍历-二叉树的后序遍历+中序遍历,输出层序遍历 团体程序设计天梯赛-练习集...
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。
输入格式:
输入第一行给出一个正整数N(≤),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。
输出格式:
在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。
输入样例:
7
2 3 1 5 7 6 4
1 2 3 4 5 6 7
输出样例:
4 1 6 3 5 7 2
二叉树:
前(先)序遍历:根左右
中序遍历:左根右
后序遍历:左右根(最后一个为根节点)
层序遍历:BFS从上到下,从左到右
前三个可以通过递归实现,最后一个BFS。
传送门:
二叉树前序遍历、中序遍历、后序遍历、层序遍历的直观理解
代码:
1 //L2-006 树的遍历-二叉树的后序遍历、中序遍历、层序遍历 2 #include<bits/stdc++.h> 3 using namespace std; 4 typedef long long ll; 5 const int maxn=1e5+10; 6 7 struct node{ 8 int l,r; 9 }tree[maxn]; 10 11 int beh[maxn],mid[maxn]; 12 13 int build(int la,int ra,int lb,int rb)//la,ra为中序遍历的, lb,rb为后序遍历的 14 { 15 if(la>ra) return 0; 16 int rt=beh[rb];//根节点为后序遍历的最后一个 17 int p1=la; 18 while(mid[p1]!=rt) p1++;//找到根节点的位置下标 19 int p2=p1-la; 20 tree[rt].l=build(la,p1-1,lb,lb+p2-1);//递归建左子树 21 tree[rt].r=build(p1+1,ra,lb+p2,rb-1);//递归建右子树 22 // cout<<rt<<endl; 23 return rt;//返回值为结束的根节点值 24 } 25 26 void bfs(int x)//bfs求得层序遍历 27 { 28 vector<int> vec; 29 queue<int> que; 30 que.push(x); 31 while(!que.empty()){ 32 int ret=que.front(); 33 que.pop(); 34 if(ret==0) break; 35 vec.push_back(ret); 36 if(tree[ret].l!=0){//左子树不为空 37 que.push(tree[ret].l); 38 } 39 if(tree[ret].r!=0){//右子树不为空 40 que.push(tree[ret].r); 41 } 42 } 43 int l=vec.size(); 44 for(int i=0;i<l-1;i++) 45 cout<<vec[i]<<" "; 46 cout<<vec[l-1]<<endl; 47 } 48 49 int main() 50 { 51 int n; 52 cin>>n; 53 for(int i=1;i<=n;i++) 54 cin>>beh[i]; 55 for(int i=1;i<=n;i++) 56 cin>>mid[i]; 57 build(1,n,1,n);//建树 58 bfs(beh[n]); 59 }
转载于:https://www.cnblogs.com/ZERO-/p/10623903.html
PTA L2-006 树的遍历-二叉树的后序遍历+中序遍历,输出层序遍历 团体程序设计天梯赛-练习集...相关推荐
- 【CCCC】PAT : 团体程序设计天梯赛-练习集 L2 答案,题解,附代码
[CCCC]PAT : 团体程序设计天梯赛-练习集 L2 答案 鉴定完毕,全部水题 ヾ(•ω•`)o 知识点分类(32): 1.树锯结构(9):二叉树的存储,编号,遍历顺序转换,求深度,底层节点,从底 ...
- PTA团体程序设计天梯赛-练习集(3)
PTA团体程序设计天梯赛-练习集 L1-001 Hello World (5 分) 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句"Hello World!"就可以 ...
- PTA团体程序设计天梯赛-练习集
PTA团体程序设计天梯赛-练习集 L1-024 后天 L1-025 正整数A+B L1-026 I Love GPLT L1-027 出租 L1-029 是不是太胖了 L1-030 一帮一 L1-03 ...
- PTA团体程序设计天梯赛-练习集Level-1(参考代码C语言/Python版)
本题目集截止到2022年天梯赛 受个人水平限制,<PTA团体程序设计天梯赛-练习集>中暂时只能把Level-1的题目做出来(也许有些Level-2的题可以写出来?)-我不是专门搞竞赛的,参 ...
- 团体程序设计天梯赛 -- 练习集 (L2合集)
文章目录 L2-001 紧急救援 (25 分) L2-002 链表去重 (25 分) L2-003 月饼 (25 分) L2-004 这是二叉搜索树吗? (25 分) L2-005 集合相似度 (25 ...
- 团体程序设计天梯赛-练习集 L2 阶段全部题解
L2-001. 紧急救援 地址链接:https://blog.csdn.net/dengkuomin/article/details/64498691 L2-002. 链表去重 地址链接:https: ...
- pta天梯赛c语言答案,PTA - 团体程序设计天梯赛-练习集(更新中)
L1-002 打印沙漏 (20 分) 不算沙漏下面,上面部分随着行数增加,字符的总数依次是1,4,9,16-满足row2×2-1<=n,逆推得上半部分行数(算上1)row=sqrt((n+1)/ ...
- 在PTA中c语言中求连续因子,团体程序设计天梯赛-练习集L1-006. *连续因子
一个正整数N的因子中可能存在若干连续的数字.例如630可以分解为3*5*6*7,其中5.6.7就是3个连续的数字.给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列. 输入 ...
- PTA 团体程序设计天梯赛-练习集 L1-034 点赞(20 分)C语言
L1-034 点赞(20 分) 微博上有个"点赞"功能,你可以为你喜欢的博文点个赞表示支持.每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性.本题就要求 ...
最新文章
- 关于java 绝对值得收藏的书籍
- 2000字详解 当Pandas遇上超大规模的数据集该如何处理呢?
- [leetcode] 5.最长回文子串
- java 递归 堆栈_Java中的堆栈安全递归
- 光模块该如何使用,光模块的使用方法介绍!
- Kruskal(P)和Prim(K)算法
- UVa 11998 破碎的键盘(数组实现链表)
- 华为周跃峰:揭秘“关于GaussDB数据库的五大谎言”
- golang 相互引用_Golang与C互用以及调用C的so动态库和a静态库
- dbcc_name 空的_DBCC INPUTBUFFER和sys.dm_exec_input_buffer DMF概述
- Java网络编程之客户端中的Socket
- 关于react上线系列问题及解决方案
- 【错误率、精度、查准率、查全率和F1度量】详细介绍
- 偏见与苛求在科技媒体中依旧根深蒂固
- PyTorch模型训练实战技巧,突破速度瓶颈
- 4月想跳槽的同学,没有更好的选择,可以去美团
- HObject,unsigned char的相互转换
- Ubuntu 设置时间同步
- php tts,给博客添加TTS语音朗读 简单快速版
- Cinema 4D Mac(C4D)常用快捷键与自定义快捷键
热门文章
- centos7本地安装mysql数据库_在CentOS7系统上安装MySQL数据库
- 简单报价单模板_圣诞节祝福邮件必这样写【附件参考模板BY埃马】
- python异步调用_python如何实现异步调用函数执行
- java executor spring_java 线程池(ExecutorService与Spring配置threadPoolTaskExecutor)
- rabbitmq消息的序列化与反序列化
- HTML 内容不能被选择,不能被复制
- java跳出循环break;return;continue使用
- java读文件指定行开始到文件的最后
- Java终止线程的三种方式
- Spring @Value转义冒号(:)的默认值