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
题解:
我发现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 树的遍历相关推荐
- 【CCCC】L2-006 树的遍历 (25分),根据后序与中序遍历建立二叉树(我讨厌树,系列1)
problem L2-006 树的遍历 (25分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30), ...
- mysql 遍历_MySQL 实现树的遍历详解及简单实现示例
MySQL 实现树的遍历 经常在一个表中有父子关系的两个字段,比如empno与manager,这种结构中需要用到树的遍历.在Oracle 中可以使用connect by简单解决问题,但MySQL 5. ...
- 那些妖术——树的遍历
本文参加CSDN博客大赛,如果你喜欢请投一票,非常感谢! 这个方法有点邪门,和大家在课堂上学的有点不一样,所以blog的名字取得有点邪乎. 一般的程序员应聘技术类的笔试都会有一道题目,那就是树的遍历( ...
- LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历--递归,迭代--反向压栈--C++解法
LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历–递归,迭代–反向压栈–C++解法 LeetCode题解专栏:LeetCode题解 LeetC ...
- LeetCode总结 -- 树的遍历篇
遍历树的数据结构中最常见的操作. 能够说大部分关于树的题目都是环绕遍历进行变体来解决的. 一般来说面试中遇到树的题目是用递归来解决的, 只是假设直接考察遍历. 那么一般递归的解法就过于简单了. 面试官 ...
- 数据结构 树的遍历(递归遍历)
//树的遍历--递归遍历 #include<stdio.h> #include<stdlib.h> #include<string.h>typedef struct ...
- 数据结构思维 第六章 树的遍历
第六章 树的遍历 原文:Chapter 6 Tree traversal 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 本章将介绍一个 Web 搜索引擎,我们将在本书其余部分开 ...
- 1094 The Largest Generation (25 分)【难度: 一般 / 树的遍历】
https://pintia.cn/problem-sets/994805342720868352/problems/994805372601090048 很传统的树的遍历. #include< ...
- 【数据结构-树】1.树与森林(树的遍历、树的存储方法、并查集的实现)
树的定义 树是一种数据结构,它是由 n(n>=1)n(n>=1)n(n>=1) 个有限结点组成一个具有层次关系的集合.把它叫做 "树" 是因为它看起来像一棵倒挂的 ...
- 【2019暑假刷题笔记-树的遍历】总结
关于树这一块,前期没有做一个学习的绪论,因为时间来不及了.在总结上回顾一下这些题目的一些特点 树的遍历的是数据结构树这一块中的一部分. 树的遍历和二叉树的遍历本质上相同.二叉树用指针也可以做,但是在考 ...
最新文章
- oracle13c迁移,Oracle数据库迁移
- c语言 1 2是什么类型,C语言2-C数据类型(1).docx
- PHP学习记录(字符串函数)
- 8类网线利弊_网线买机制成品还是自己DIY?有这些点要注意
- [开源] 基于ABP,Hangfire的开源Sharepoint文件同步解决方案----SuperRocket.SPSync
- oracle list 分区详解,oracle的List分区及分区索引
- 信息学奥赛C++语言:单词转换
- “反催收”渐成黑灰产业 专家呼吁协同治理“债闹”黑灰产
- java中double除法和取余的若干注意
- 数据安全对企业的重要性
- 台达plc自由口通讯_【台达PLC详解】附PLC功能总简介~
- Python-Matplotlib可视化(3)——自定义样式绘制精美统计图
- android的直播送礼物,仿斗鱼直播送礼物效果
- Python正则表达式(一看就懂)
- 信息学奥赛C++编程:计算分数加减表达式的值
- alt复制选区就会卡 ps_PS经常用到的复制技巧
- 总结学过的技术,实现加密注册,登录及过期不能访问,微信朋友圈功能,文章比较长,但是比较详细。
- 国外java_Java开发必知道的国外10大网站
- PEP(Python Enhancement Proposals, python改进建议书)8--python代码风格指南
- 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制
热门文章
- 如果给你一个亿,你想去干嘛?各专业的科研狗是这样回答的……
- php5.2 zengd,大对杀狗狗再犯低级错误 ZEN狂输200目笑翻棋友
- mysql group 条件,mysql - mysql group by,两个条件,限制1 - SO中文参考 - www.soinside.com...
- python standardscaler_教你用python一步步解决“维度灾难”
- java 声明变量构成_Java—变量
- Java多线程之龟兔赛跑和抢票
- [SpringBoot2]数据访问_数据库场景的自动配置分析和整合测试
- 高等数学上-赵立军-北京大学出版社-题解-练习2.6
- 英语期末复习unit 1-2课后习题第一题及背诵段落
- #10003. 「一本通 1.1 例 4」加工生产调度(贪心)