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. 树的遍历(不建树)相关推荐

  1. L2-006 树的遍历(建树)

    题目连接 https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456 视频讲解 https://www. ...

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

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

  3. L2-006 树的遍历-团体程序设计天梯赛GPLT

    题目来源:团体程序设计天梯赛-练习集 题目地址:L2-006 树的遍历 题目大意 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 预备知识: 中序遍历 ...

  4. PTA L2-006 树的遍历-二叉树的后序遍历+中序遍历,输出层序遍历 团体程序设计天梯赛-练习集...

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

  5. PTA L2-035 完全二叉树的层序遍历(树的遍历)

    L2-035 完全二叉树的层序遍历 (25分) 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树.对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的 ...

  6. 树的遍历(中序,前序,后序)

    与只有一种逻辑遍历它们的线性数据结构(数组.链表.队列.堆栈等)不同,树可以以不同的方式遍历,常见的有中序遍历,前序遍历和后序遍历. 实现各种遍历的方法又包括: 以上图为例: 深度优先遍历:  (a) ...

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

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

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

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

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

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

最新文章

  1. .fa .fna和.fasta是同一种格式文件吗?
  2. 悬浮提示工具(悬浮出现自动消失)
  3. arpr选定的文件非rar压缩包_python解压压缩包
  4. 用Bioconductor对基因组注释
  5. 运行scrapy保存图片,报错ValueError: Missing scheme in request url: h
  6. 微软收购Citus Data | 再次肯定对开源的承诺,并加速了Azure PostgreSQL的性能和扩展...
  7. 「雕爷学编程」Arduino动手做(20)—水银开关模块
  8. 计算机三级嵌入式系统之常考指令
  9. 【Oracle】跟踪文件目录(User_Dump_Dest)生成脚本(11g/9i).txt
  10. 列举计算机组装所需的各个硬件,计算机组装和维修期中考试.doc
  11. Mybatis全局配置文件Configuration.xml详解
  12. 和利时 浙大中控DCS组态软件,操作员在线模拟软件
  13. 如何关闭Windows 1011自动更新
  14. ASP使用ASPupload组件上传多个文件
  15. django.relatedField-关联域
  16. Connection could not be established with host smtp.163.com [Connection timed out #110]
  17. web漏洞-远端WWW服务支持TRACE请求
  18. 这100佳创新互联网公司值得你去
  19. ei拼音的四个声调对应的字_【ei的四个声调有汉字】作文写作问答 - 归教作文网...
  20. 以智慧城市为标杆打造立体防控,咫尺之间华丽转身

热门文章

  1. 两种语言的html文件,2. 第二章 HTML语言(一)(33页)-原创力文档
  2. 【java】Charset 字符集
  3. maven 多模块项目:单独构建某个模块
  4. 【linux】【firewalld】防火墙设置
  5. php中extends是什么意思,在php中extends与implements的区别
  6. php微信支付分取消订单,微信支付PHP开发教程五关闭订单
  7. java词类_英语词类浅谈
  8. 测试小白入门必知必会的8个测试工具
  9. Python的3种字符串格式化,做个超全对比!
  10. 《中餐厅》弹幕数据分析,我不要你觉得,我只要我觉得!