l2-006 树的遍历
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 分析:
这道题和pat l2-004简直就是同一道题目啊...
只不过那题是给你中序和先序...一个意思嘛
在先序或后序中,只要我们知道了左子树或者右子树的范围,我们就可以找到根节点的值,从而在中序中找到根节点的位置,然后递归去做同样的步骤就好啦。层序遍历其实就是bfs啦!用用队列就好了...
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e5; 4 int mid[32], bk[32], tree[maxn]; 5 struct node{ 6 int l, r; 7 }a[maxn]; 8 int build(int la, int lb, int ra, int rb){ 9 if(la>lb) return 0; 10 int root=bk[rb]; 11 int p1, p2; 12 p1=la; 13 while(root!=mid[p1]) p1++; 14 p2=p1-la; 15 a[root].l=build(la, p1-1, ra, ra+p2-1); 16 a[root].r=build(p1+1, lb, ra+p2, rb-1); 17 return root; 18 } 19 void bfs(int x){ 20 int cnt=0; 21 queue<int>q; 22 q.push(x); 23 while(q.size()){ 24 int m=q.front(); q.pop(); 25 ++cnt==1? cout<<m:cout<<" "<<m; 26 if(a[m].l!=0) 27 q.push(a[m].l); 28 if(a[m].r!=0) 29 q.push(a[m].r); 30 } 31 } 32 int main(){ 33 int n; 34 cin>>n; 35 for(int i=0; i<n; i++) 36 cin>>bk[i]; 37 for(int i=0; i<n; i++) 38 cin>>mid[i]; 39 int root=build(0, n-1, 0, n-1); 40 bfs(root); 41 42 return 0; 43 }
转载于:https://www.cnblogs.com/ledoc/p/6591900.html
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暑假刷题笔记-树的遍历】总结
关于树这一块,前期没有做一个学习的绪论,因为时间来不及了.在总结上回顾一下这些题目的一些特点 树的遍历的是数据结构树这一块中的一部分. 树的遍历和二叉树的遍历本质上相同.二叉树用指针也可以做,但是在考 ...
最新文章
- 【Sql Server】DateBase-简单的Select查询
- 超融合架构下的数据中心
- AndroidWear开发之开发环境[前奏]
- 2018.08.10 atcoder Median Sum(01背包)
- .net post提交后接收返回数据_Ajax提交表单的方式
- scrapy架构解析
- 互联网晚报 | 3月19日 星期六 |​ 拼多多回应“六万人砍价不成功”;Netflix计划向分享账号的用户收费...
- warning:deprecated conversion from string constant to 'char *' 解决方案
- X86逆向教程2:提取按钮通杀特征码
- 判断链表是否有环,并找出入环点☆
- 设备上的介质簇的结构不正确_环保设备选型参考系列——生化系统之潜水搅拌机【价格】...
- python怎么调用函数的返回值_python函数的返回值是什么
- MongoDB save()方法和insert()方法的区别
- 5G无线系统设计与国际标准 pdf和Word
- 宁芝普拉姆键盘说明书以及键盘校验软件
- Java 中的 Clone()
- 51单片机利用STC-ISP下载软件时串口打开失败怎么办?
- 《挑战程序设计竞赛》阅读笔记二 之 ALDS1_2_C Stable Sort
- Android 贪食蛇
- 去水印的手机APP哪个好用,怎么一键去水印
热门文章
- cygwin This indicates that the /etc/passwd (and possibly /etc/group) files should be rebuilt 问题解决办法
- 基于海思开发板的屏幕截图程序(二)
- Linux下获得线程ID syscall(224)
- Linux 串口编程三 使用termios与API进行串口程序开发
- npm eject 暴露webpack报错,less或sass添加报错
- React开发(116):ant design search引入
- react学习(7)----react转换值同render
- [css] span与span之间有看不见的空白间隔是什么原因引起的?有什么解决办法?
- 前端学习(2584):ant design pro
- 前端学习(1930)vue之电商管理系统电商系统之美化一层循环的UI结构删除业务逻辑实现