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 思路:偷个懒不创建二叉树的,直接递归知道每个数是第几层然后存放在优先队列中,但是没有AC,然后我想了一下好像一层中的键值出现的顺序可能不一样,开始觉得这种方法是错误的,但是后面想了一下,根据中序能知道同一层元素中输出的优先顺序,于是加入了在结构体中quan,这个就是最后一个测试点。
#include<set> #include<map> #include<queue> #include<iostream> #include<algorithm> using namespace std; struct Node{int key;int quan;int ceng;bool operator < (const Node &a)const{if (a.ceng!=ceng)return a.ceng < ceng;else return a.quan < quan;} }; int n; int b[40]; map<int, int>ma; priority_queue<Node>que; void Print(int s,int e,int c) {if (s>e)return;Node node;if (s == e){node.ceng = c;node.quan = s;node.key = b[s];que.push(node);}else{int max = ma[b[s]], ss = s;for (int i = s; i <= e; i++)if (ma[b[i]] > max){max = ma[b[i]];ss = i;}node.ceng = c;node.quan = ss;node.key = b[ss];que.push(node);Print(s, ss - 1, c + 1);Print(ss + 1, e, c + 1);}} int main() {cin >> n;for (int i = 0; i < n; i++){int num; cin >> num;ma.insert(pair<int, int>(num, i));}for (int i = 0; i < n; i++)cin >> b[i];Print(0, n - 1, 0);for (int i = 1; i <= n; i++){if (i == 1)cout << que.top().key;else cout << " " << que.top().key;que.pop();}cout << endl;return 0; }
转载于:https://www.cnblogs.com/zengguoqiang/p/8652361.html
L2-006. 树的遍历(不建树)相关推荐
- L2-006 树的遍历(建树)
题目连接 https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456 视频讲解 https://www. ...
- 【CCCC】L2-006 树的遍历 (25分),根据后序与中序遍历建立二叉树(我讨厌树,系列1)
problem L2-006 树的遍历 (25分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30), ...
- L2-006 树的遍历-团体程序设计天梯赛GPLT
题目来源:团体程序设计天梯赛-练习集 题目地址:L2-006 树的遍历 题目大意 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 预备知识: 中序遍历 ...
- PTA L2-006 树的遍历-二叉树的后序遍历+中序遍历,输出层序遍历 团体程序设计天梯赛-练习集...
L2-006 树的遍历 (25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤),是二叉树中结点的个 ...
- PTA L2-035 完全二叉树的层序遍历(树的遍历)
L2-035 完全二叉树的层序遍历 (25分) 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树.对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的 ...
- 树的遍历(中序,前序,后序)
与只有一种逻辑遍历它们的线性数据结构(数组.链表.队列.堆栈等)不同,树可以以不同的方式遍历,常见的有中序遍历,前序遍历和后序遍历. 实现各种遍历的方法又包括: 以上图为例: 深度优先遍历: (a) ...
- 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 ...
最新文章
- .fa .fna和.fasta是同一种格式文件吗?
- 悬浮提示工具(悬浮出现自动消失)
- arpr选定的文件非rar压缩包_python解压压缩包
- 用Bioconductor对基因组注释
- 运行scrapy保存图片,报错ValueError: Missing scheme in request url: h
- 微软收购Citus Data | 再次肯定对开源的承诺,并加速了Azure PostgreSQL的性能和扩展...
- 「雕爷学编程」Arduino动手做(20)—水银开关模块
- 计算机三级嵌入式系统之常考指令
- 【Oracle】跟踪文件目录(User_Dump_Dest)生成脚本(11g/9i).txt
- 列举计算机组装所需的各个硬件,计算机组装和维修期中考试.doc
- Mybatis全局配置文件Configuration.xml详解
- 和利时 浙大中控DCS组态软件,操作员在线模拟软件
- 如何关闭Windows 1011自动更新
- ASP使用ASPupload组件上传多个文件
- django.relatedField-关联域
- Connection could not be established with host smtp.163.com [Connection timed out #110]
- web漏洞-远端WWW服务支持TRACE请求
- 这100佳创新互联网公司值得你去
- ei拼音的四个声调对应的字_【ei的四个声调有汉字】作文写作问答 - 归教作文网...
- 以智慧城市为标杆打造立体防控,咫尺之间华丽转身