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

输入格式:
输入第一行给出一个正整数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

题解:

我发现pta就喜欢考前序后序这种题。。。
给出后序+中序,求层次遍历
先序,后序遍历可以确定根节点。
中序遍历可以确定左子树和右子树。
不断递归就查找就可以

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=40;
int mid[maxn];
int post[maxn];
struct node{int lson,rson;
}f[maxn];
int build(int lmid,int rmid,int lpost,int rpost){//中序遍历  后序遍历
//后序遍历确定根
//先序,后序遍历可以确定根节点。
//中序遍历可以确定左子树和右子树。if(lmid>rmid)return 0;int root=post[rpost];int fa=lmid; while(mid[fa]!=root)fa++;//确定根 int len=fa-lmid;//确定左子树长度f[root].lson=build(lmid,fa-1,lpost,lpost+len-1);//左子树 f[root].rson=build(fa+1,rmid,lpost+len,rpost-1);//右子树 return root;
}
void bfs(int x)
{queue<int>q;vector<int>v;q.push(x);while(!q.empty()){int w=q.front();q.pop();if(!w)break;v.push_back(w);if(f[w].lson)q.push(f[w].lson);if(f[w].rson)q.push(f[w].rson);}int len=v.size();for(int i=0;i<len;i++){if(i!=len-1)printf("%d ",v[i]);else cout<<v[i];}return ;
}
int main()
{int n;cin>>n;for(int i=0;i<n;i++)cin>>post[i];//后序 for(int i=0;i<n;i++)cin>>mid[i];//中序int root=post[n-1];build(0,n-1,0,n-1);bfs(root);return 0;
}

L2-006 树的遍历相关推荐

  1. 【CCCC】L2-006 树的遍历 (25分),根据后序与中序遍历建立二叉树(我讨厌树,系列1)

    problem L2-006 树的遍历 (25分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30), ...

  2. mysql 遍历_MySQL 实现树的遍历详解及简单实现示例

    MySQL 实现树的遍历 经常在一个表中有父子关系的两个字段,比如empno与manager,这种结构中需要用到树的遍历.在Oracle 中可以使用connect by简单解决问题,但MySQL 5. ...

  3. 那些妖术——树的遍历

    本文参加CSDN博客大赛,如果你喜欢请投一票,非常感谢! 这个方法有点邪门,和大家在课堂上学的有点不一样,所以blog的名字取得有点邪乎. 一般的程序员应聘技术类的笔试都会有一道题目,那就是树的遍历( ...

  4. LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历--递归,迭代--反向压栈--C++解法

    LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历–递归,迭代–反向压栈–C++解法 LeetCode题解专栏:LeetCode题解 LeetC ...

  5. LeetCode总结 -- 树的遍历篇

    遍历树的数据结构中最常见的操作. 能够说大部分关于树的题目都是环绕遍历进行变体来解决的. 一般来说面试中遇到树的题目是用递归来解决的, 只是假设直接考察遍历. 那么一般递归的解法就过于简单了. 面试官 ...

  6. 数据结构 树的遍历(递归遍历)

    //树的遍历--递归遍历 #include<stdio.h> #include<stdlib.h> #include<string.h>typedef struct ...

  7. 数据结构思维 第六章 树的遍历

    第六章 树的遍历 原文:Chapter 6 Tree traversal 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 本章将介绍一个 Web 搜索引擎,我们将在本书其余部分开 ...

  8. 1094 The Largest Generation (25 分)【难度: 一般 / 树的遍历】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805372601090048 很传统的树的遍历. #include< ...

  9. 【数据结构-树】1.树与森林(树的遍历、树的存储方法、并查集的实现)

    树的定义 树是一种数据结构,它是由 n(n>=1)n(n>=1)n(n>=1) 个有限结点组成一个具有层次关系的集合.把它叫做 "树" 是因为它看起来像一棵倒挂的 ...

  10. 【2019暑假刷题笔记-树的遍历】总结

    关于树这一块,前期没有做一个学习的绪论,因为时间来不及了.在总结上回顾一下这些题目的一些特点 树的遍历的是数据结构树这一块中的一部分. 树的遍历和二叉树的遍历本质上相同.二叉树用指针也可以做,但是在考 ...

最新文章

  1. oracle13c迁移,Oracle数据库迁移
  2. c语言 1 2是什么类型,C语言2-C数据类型(1).docx
  3. PHP学习记录(字符串函数)
  4. 8类网线利弊_网线买机制成品还是自己DIY?有这些点要注意
  5. [开源] 基于ABP,Hangfire的开源Sharepoint文件同步解决方案----SuperRocket.SPSync
  6. oracle list 分区详解,oracle的List分区及分区索引
  7. 信息学奥赛C++语言:单词转换
  8. “反催收”渐成黑灰产业 专家呼吁协同治理“债闹”黑灰产
  9. java中double除法和取余的若干注意
  10. 数据安全对企业的重要性
  11. 台达plc自由口通讯_【台达PLC详解】附PLC功能总简介~
  12. Python-Matplotlib可视化(3)——自定义样式绘制精美统计图
  13. android的直播送礼物,仿斗鱼直播送礼物效果
  14. Python正则表达式(一看就懂)
  15. 信息学奥赛C++编程:计算分数加减表达式的值
  16. alt复制选区就会卡 ps_PS经常用到的复制技巧
  17. 总结学过的技术,实现加密注册,登录及过期不能访问,微信朋友圈功能,文章比较长,但是比较详细。
  18. 国外java_Java开发必知道的国外10大网站
  19. PEP(Python Enhancement Proposals, python改进建议书)8--python代码风格指南
  20. 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制

热门文章

  1. 如果给你一个亿,你想去干嘛?各专业的科研狗是这样回答的……
  2. php5.2 zengd,大对杀狗狗再犯低级错误 ZEN狂输200目笑翻棋友
  3. mysql group 条件,mysql - mysql group by,两个条件,限制1 - SO中文参考 - www.soinside.com...
  4. python standardscaler_教你用python一步步解决“维度灾难”
  5. java 声明变量构成_Java—变量
  6. Java多线程之龟兔赛跑和抢票
  7. [SpringBoot2]数据访问_数据库场景的自动配置分析和整合测试
  8. 高等数学上-赵立军-北京大学出版社-题解-练习2.6
  9. 英语期末复习unit 1-2课后习题第一题及背诵段落
  10. #10003. 「一本通 1.1 例 4」加工生产调度(贪心)