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
#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. 树的遍历相关推荐
- 【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暑假刷题笔记-树的遍历】总结
关于树这一块,前期没有做一个学习的绪论,因为时间来不及了.在总结上回顾一下这些题目的一些特点 树的遍历的是数据结构树这一块中的一部分. 树的遍历和二叉树的遍历本质上相同.二叉树用指针也可以做,但是在考 ...
最新文章
- Matlab实现 sift 特征匹配(代码源自网络)
- 元素,布局方式,BFC和清除浮动
- DL之CNN:基于CNN-RNN(GRU,2)算法(keras+tensorflow)实现不定长文本识别
- 关于list.extend(iterable)
- 《大数据存储:MongoDB实战指南》一1.1 什么是大数据
- 使用游标显示销售报表_协助报表开发之 MongoDB join mysql
- python查看程序运行时间
- 如何用minitab检测一组数据是否服从正态分布
- txt文档下载另存为解决
- html中一级标题和二级标题,如何设置一级二级三级标题
- 爬虫 登录开心网,登录人人网
- 光纤跳线如何选择?需要注意什么?
- linux tail 命令 阿星小栈
- 大冰--寻人启事--one
- 业界关注中药创新 古典名方目录急盼出台
- python写出雷霆战机_利用Python自制雷霆战机小游戏,娱乐编程,快乐学习!
- 新能源汽车档位控制器软件功能定义及其策略
- 算法题:最少出牌次数
- 安卓bmi项目_身高体重指数计算器手机版|bmi体重指数计算器安卓版下载 v1.0.0 - 跑跑车安卓网...
- 当代教育实践与教学研究杂志社当代教育实践与教学研究编辑部2022年第24期目录