L2-006 树的遍历 (25 分)

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

输入格式:

输入第一行给出一个正整数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 树的遍历-二叉树的后序遍历+中序遍历,输出层序遍历 团体程序设计天梯赛-练习集...相关推荐

  1. 【CCCC】PAT : 团体程序设计天梯赛-练习集 L2 答案,题解,附代码

    [CCCC]PAT : 团体程序设计天梯赛-练习集 L2 答案 鉴定完毕,全部水题 ヾ(•ω•`)o 知识点分类(32): 1.树锯结构(9):二叉树的存储,编号,遍历顺序转换,求深度,底层节点,从底 ...

  2. PTA团体程序设计天梯赛-练习集(3)

    PTA团体程序设计天梯赛-练习集 L1-001 Hello World (5 分) 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句"Hello World!"就可以 ...

  3. PTA团体程序设计天梯赛-练习集

    PTA团体程序设计天梯赛-练习集 L1-024 后天 L1-025 正整数A+B L1-026 I Love GPLT L1-027 出租 L1-029 是不是太胖了 L1-030 一帮一 L1-03 ...

  4. PTA团体程序设计天梯赛-练习集Level-1(参考代码C语言/Python版)

    本题目集截止到2022年天梯赛 受个人水平限制,<PTA团体程序设计天梯赛-练习集>中暂时只能把Level-1的题目做出来(也许有些Level-2的题可以写出来?)-我不是专门搞竞赛的,参 ...

  5. 团体程序设计天梯赛 -- 练习集 (L2合集)

    文章目录 L2-001 紧急救援 (25 分) L2-002 链表去重 (25 分) L2-003 月饼 (25 分) L2-004 这是二叉搜索树吗? (25 分) L2-005 集合相似度 (25 ...

  6. 团体程序设计天梯赛-练习集 L2 阶段全部题解

    L2-001. 紧急救援 地址链接:https://blog.csdn.net/dengkuomin/article/details/64498691 L2-002. 链表去重 地址链接:https: ...

  7. pta天梯赛c语言答案,PTA - 团体程序设计天梯赛-练习集(更新中)

    L1-002 打印沙漏 (20 分) 不算沙漏下面,上面部分随着行数增加,字符的总数依次是1,4,9,16-满足row2×2-1<=n,逆推得上半部分行数(算上1)row=sqrt((n+1)/ ...

  8. 在PTA中c语言中求连续因子,团体程序设计天梯赛-练习集L1-006. *连续因子

    一个正整数N的因子中可能存在若干连续的数字.例如630可以分解为3*5*6*7,其中5.6.7就是3个连续的数字.给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列. 输入 ...

  9. PTA 团体程序设计天梯赛-练习集 L1-034 点赞(20 分)C语言

    L1-034 点赞(20 分) 微博上有个"点赞"功能,你可以为你喜欢的博文点个赞表示支持.每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性.本题就要求 ...

最新文章

  1. 关于java 绝对值得收藏的书籍
  2. 2000字详解 当Pandas遇上超大规模的数据集该如何处理呢?
  3. [leetcode] 5.最长回文子串
  4. java 递归 堆栈_Java中的堆栈安全递归
  5. 光模块该如何使用,光模块的使用方法介绍!
  6. Kruskal(P)和Prim(K)算法
  7. UVa 11998 破碎的键盘(数组实现链表)
  8. 华为周跃峰:揭秘“关于GaussDB数据库的五大谎言”
  9. golang 相互引用_Golang与C互用以及调用C的so动态库和a静态库
  10. dbcc_name 空的_DBCC INPUTBUFFER和sys.dm_exec_input_buffer DMF概述
  11. Java网络编程之客户端中的Socket
  12. 关于react上线系列问题及解决方案
  13. 【错误率、精度、查准率、查全率和F1度量】详细介绍
  14. 偏见与苛求在科技媒体中依旧根深蒂固
  15. PyTorch模型训练实战技巧,突破速度瓶颈
  16. 4月想跳槽的同学,没有更好的选择,可以去美团
  17. HObject,unsigned char的相互转换
  18. Ubuntu 设置时间同步
  19. php tts,给博客添加TTS语音朗读 简单快速版
  20. Cinema 4D Mac(C4D)常用快捷键与自定义快捷键

热门文章

  1. centos7本地安装mysql数据库_在CentOS7系统上安装MySQL数据库
  2. 简单报价单模板_圣诞节祝福邮件必这样写【附件参考模板BY埃马】
  3. python异步调用_python如何实现异步调用函数执行
  4. java executor spring_java 线程池(ExecutorService与Spring配置threadPoolTaskExecutor)
  5. rabbitmq消息的序列化与反序列化
  6. HTML 内容不能被选择,不能被复制
  7. java跳出循环break;return;continue使用
  8. java读文件指定行开始到文件的最后
  9. Java终止线程的三种方式
  10. Spring @Value转义冒号(:)的默认值