给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。

输入格式:

输入第一行给出一个正整数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
#include<algorithm>
#include<iostream>
#include<cstdio>
#include<vector>
#include<set>
#include<queue>
using namespace std;const int N = 50 + 5;struct node{int key, lchild, rchild;node(){lchild = rchild = 0;}
}Node[N];vector<int> post, in;
int n, key, st;
void DFS(int &root, int ls, int lt, int is, int it){if(root == 0) root = ++st;int p = post[lt];Node[root].key = p;int pos = is;while(in[pos] != p) pos++;if(pos != is){DFS(Node[root].lchild, ls, ls + pos - is - 1, is, pos - 1);}if(pos != it){DFS(Node[root].rchild, ls + pos - is, lt - 1, pos + 1, it);}
}
void BFS(int root){int cnt = 0;queue<int> Q;Q.push(root);while(!Q.empty()){int tmp = Q.front(); Q.pop();printf("%d%c", Node[tmp].key, ++cnt == n?'\n':' ');if(Node[tmp].lchild){Q.push(Node[tmp].lchild);}if(Node[tmp].rchild){Q.push(Node[tmp].rchild);}}
}
int main(){scanf("%d", &n);for(int i = 0; i < n; i++){scanf("%d", &key);post.push_back(key);}for(int i = 0; i < n; i++){scanf("%d", &key);in.push_back(key);}int root = 0;st = 0;DFS(root, 0, n-1, 0, n-1);BFS(root);
}

转载于:https://www.cnblogs.com/Pretty9/p/8623828.html

L2-006. 树的遍历相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 1094 The Largest Generation (25 分)【难度: 一般 / 树的遍历】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805372601090048 很传统的树的遍历. #include< ...

  9. 【数据结构-树】1.树与森林(树的遍历、树的存储方法、并查集的实现)

    树的定义 树是一种数据结构,它是由 n(n>=1)n(n>=1)n(n>=1) 个有限结点组成一个具有层次关系的集合.把它叫做 "树" 是因为它看起来像一棵倒挂的 ...

  10. 【2019暑假刷题笔记-树的遍历】总结

    关于树这一块,前期没有做一个学习的绪论,因为时间来不及了.在总结上回顾一下这些题目的一些特点 树的遍历的是数据结构树这一块中的一部分. 树的遍历和二叉树的遍历本质上相同.二叉树用指针也可以做,但是在考 ...

最新文章

  1. Matlab实现 sift 特征匹配(代码源自网络)
  2. 元素,布局方式,BFC和清除浮动
  3. DL之CNN:基于CNN-RNN(GRU,2)算法(keras+tensorflow)实现不定长文本识别
  4. 关于list.extend(iterable)
  5. 《大数据存储:MongoDB实战指南》一1.1 什么是大数据
  6. 使用游标显示销售报表_协助报表开发之 MongoDB join mysql
  7. python查看程序运行时间
  8. 如何用minitab检测一组数据是否服从正态分布
  9. txt文档下载另存为解决
  10. html中一级标题和二级标题,如何设置一级二级三级标题
  11. 爬虫 登录开心网,登录人人网
  12. 光纤跳线如何选择?需要注意什么?
  13. linux tail 命令 阿星小栈
  14. 大冰--寻人启事--one
  15. 业界关注中药创新 古典名方目录急盼出台
  16. python写出雷霆战机_利用Python自制雷霆战机小游戏,娱乐编程,快乐学习!
  17. 新能源汽车档位控制器软件功能定义及其策略
  18. 算法题:最少出牌次数
  19. 安卓bmi项目_身高体重指数计算器手机版|bmi体重指数计算器安卓版下载 v1.0.0 - 跑跑车安卓网...
  20. 当代教育实践与教学研究杂志社当代教育实践与教学研究编辑部2022年第24期目录

热门文章

  1. 终于有人把中医“数字化”了 | 极客视频
  2. re模块与正则表达式
  3. 大话:边缘计算、雾计算、云计算
  4. 【C++】 66_C++ 中的类型识别
  5. 神经网络反向传播梯度计算数学原理
  6. DHCP Server 故障转移实现 (结合H3C交换机)
  7. 极光API推送 (v3 版本)
  8. sizeof用法研究
  9. 解决mysql无法远程登陆问题
  10. 【转载】快速升职加薪的10个方法