团体程序设计天梯赛-练习集L2-011 玩转二叉树(构造二叉树+BFS)
来源:互联网 发布:手机音乐频谱显示软件 编辑:程序博客网 时间:2024/04/18 07:11
L2-011. 玩转二叉树
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越
给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。
输入格式:
输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。
输出格式:
在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。
输入样例:71 2 3 4 5 6 74 1 3 2 6 5 7输出样例:
4 6 1 7 5 3 2大体题意:给你二叉树的中序遍历和前序遍历,然后再将所有非叶结点左右孩子对换,最后层序遍历输出。思路:分析下样例,思路很明确,先根据中序遍历和前序遍历用链表的方式构造出二叉树,然后再层序遍历输出即可,只不过这里的层序遍历是先右后左的方式。构造二叉树用结构体递归做,层序遍历直接bfs即可!#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;int *pre,*in,n;int *ans;int cnt;struct Node{ int v; Node* left,*right;}*root;queue<Node*>q;int cnt2 = 0;Node *build(int *pre,int *in,int len){ if (len == 0)return NULL; Node * node = new Node; node->v = *pre; ++cnt2; if (cnt2==1)root = node; int rootdex = 0; for (; rootdex < n; ++rootdex)if (in[rootdex] == *pre)break; node->left = build(pre+1,in,rootdex); node->right = build(pre+1+rootdex,in+rootdex+1,len-rootdex-1); return node;}void print(){ while(!q.empty())q.pop(); q.push(root); while(!q.empty()){ Node *u = q.front();q.pop(); ans[cnt++] = u->v; if (u->right != NULL)q.push(u->right); if (u->left != NULL)q.push(u->left); } for (int i = 0; i < cnt; ++i){ if (i)printf(" "); printf("%d",ans[i]); }}int main(){ scanf("%d",&n); pre = new int[n]; in = new int[n]; ans = new int[n]; cnt = 0; for (int i = 0; i < n; ++i)scanf("%d",&in[i]); for (int i = 0; i < n; ++i)scanf("%d",&pre[i]); build(pre,in,n); print(); return 0;}
0 0
- 团体程序设计天梯赛-练习集L2-011 玩转二叉树(构造二叉树+BFS)
- 团体程序设计天梯赛L2-011 玩转二叉树
- 团体程序设计天梯赛-练习集 L2-011. 玩转二叉树
- 团体程序设计天梯赛-练习集L2-011. 玩转二叉树
- 团体程序设计天梯赛-练习集 L2-011. 玩转二叉树 解题报告
- 团体程序设计天梯赛——玩转二叉树(遍历构造二叉树)
- L2-011. 玩转二叉树-PAT团体程序设计天梯赛GPLT
- L2-011. 玩转二叉树-PAT团体程序设计天梯赛GPLT
- 团体程序设计天梯赛-练习集 L2-4. 这是二叉搜索树吗? 区间递归
- 团体程序设计天梯赛-练习集 L2-004. 这是二叉搜索树吗?GU
- 团体程序设计天梯赛-练习集L2-004. 这是二叉搜索树吗
- 团体程序设计天梯赛-练习集-L2-004. 这是二叉搜索树吗?
- 团体程序设计天梯赛-练习集 L2-004. 这是二叉搜索树吗? 解题报告
- 团体程序设计天梯赛-练习集 L2-006 树的遍历 根据后序中序建树+BFS
- 团体程序设计天梯赛L2-004 这是二叉搜索树吗?(数据结构)
- 团体程序设计天梯赛-练习集 -- L3-016. 二叉搜索树的结构(模拟)
- 天梯赛 L2-011 玩转二叉树 数据结构
- 天梯赛 L2-011. 玩转二叉树(数据结构)
- Android属性动画设置中心点
- Linux下的platform总线驱动(一)
- 微信创建自定义目录
- 北漂几年了?感觉如何?后悔了还是更坚定了?
- Spring Security3 - MVC 整合教程
- 团体程序设计天梯赛-练习集L2-011 玩转二叉树(构造二叉树+BFS)
- 使用IntelliJ IDEA 16.1写hadoop程序
- 个人简述~
- Linux入门级需要掌握的命令
- nodejs+mongodb
- SpringMVC与iReport(JasperReports) 整合开发实例教程
- MySQL存储过程详解 mysql 存储过程
- LayoutInflater.inflate()三种重载方法参数解释
- Java8:Stream概念