题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456

题意:给出一个二叉树的结点数目n,后序遍历序列post,中序遍历序列in,求其层序遍历序列。

思路:首先给二叉树每个结点一个编号,按照层序遍历的顺序一次编号,即一个编号为i的结点其左子树根节点编号为2*i+1,其右子树根节点的编号为2*i+2(二叉树的根节点为0),因为30层的二叉树编号达到了2*30-1,不能直接用数组存,会爆空间。我们可以用优先队列和二元组pair来存,pair的first存结点编号,second存该结点的值。之后就暴力递归了,每次将根节点入队,然后依次对其左子树、右子树递归调用。

AC代码:

#include<bits/stdc++.h>
using namespace std;int post[35],in[35];
int n;
typedef pair<int,int> PII;
priority_queue<PII,vector<PII>,greater<PII> > pq;void getc(int l,int r,int root,int index){if(l>r) return;int i=l;while(in[i]!=post[root]) ++i;pq.push(make_pair(index,post[root]));getc(l,i-1,root-1-r+i,2*index+1);getc(i+1,r,root-1,2*index+2);
}int main(){scanf("%d",&n);for(int i=0;i<n;++i)scanf("%d",&post[i]);for(int i=0;i<n;++i)scanf("%d",&in[i]);getc(0,n-1,n-1,0);PII p=pq.top();pq.pop();printf("%d",p.second);while(!pq.empty()){p=pq.top();pq.pop();printf(" %d",p.second);}printf("\n");return 0;
}

转载于:https://www.cnblogs.com/FrankChen831X/p/10542561.html

pta l2-6(树的遍历)相关推荐

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

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

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

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

  3. PTA L2 题目合集

    L2-001 紧急救援 (25 分) 题解链接 L2-002 链表去重 (25 分) #include<bits/stdc++.h> #define PIS pair <int, s ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 使用结构体数组统计男、女人数,计算全体学生的平均年龄、平均成绩,并将高于平均成绩的学生信息输出
  2. 自定义类似于listView中Item背景
  3. 沙利文:奢侈品防伪领域RFID技术作用巨大
  4. Prototype Pattern(原型模式)
  5. 自然语言处理美国政客的社交媒体消息分类
  6. 前端学习(3328):闭包的形式4
  7. emc re 整改 超标_老刘工程师睡前故事5-EMC 辐射发射超标怎么办?
  8. github private链接访问_将github配置为图床+PicGo配置
  9. 语言做的表白魔方_程序员表白教程,这些代码用过的都说浪漫
  10. python儿童入门视频-老男孩Python视频教程全套完整版!无偿分享~
  11. 2020年数据库系统工程师下午真题及答案解析
  12. 【架构师面试-大厂内部面试题-4】-MySQL 运维基础知识面试题汇总50题
  13. getParameterValues 和 getParameter区别
  14. BT500-BT1788主观质量评价
  15. java弹窗代码_JAVA的弹窗怎么做?
  16. hive登录失败的问题解决
  17. 《第四周RFID作业》物联112118 林家辉
  18. matlab 数据透视表,MATLAB | 用行为数据处理EEG数据事件码
  19. 你认为vscode和visual studio哪个好?
  20. 31省份推出40万亿投资蓝图 新基建、公共卫生成亮点

热门文章

  1. pythonspark实例_spark+python快速入门实战小例子(PySpark)
  2. Mysql 字符操作函数相关
  3. ui项目答辩中学到了什么_我在UI设计9年中学到的12件事
  4. CMDB功能分析与实现方案
  5. Realtime Ray Tracing RenderMan Point Cloud
  6. v-if v-else-if v-else
  7. 02.并发编程(2)Thread类源码分析
  8. [译]关于NODE_ENV,哪些你应该了解
  9. EF选择Mysql数据源
  10. ie8下修改input的type属性报错