后序中序——>前序
来源:互联网 发布:sql基础教程 第二版 编辑:程序博客网 时间:2024/05/17 09:13
给定一棵二叉树的后序遍历和中序遍历,请你输出其前序遍历的序列。这里假设键值都是互不相等的正整数。
输入格式:
输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。
输出格式:
在一行中输出该树的前序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。
输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7
输出样例:4 1 3 2 6 5 7
代码实现
#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <map>#include <vector>#include <set>#include <cmath>using namespace std;typedef long long ll;const int maxn=65535;int in[50], post[50];typedef struct node{ int key; struct node *lson, *rson;}*root;node* Bitree(int In[], int Post[], int N){ if(N==0) return NULL; node *Root = new node; Root->key = Post[N-1]; // 在有N个几点的后序中最后一个节点是根节点 int i; for(i=0; i<N; i++) { if(In[i]==Post[N-1]) //在中序中找出根节点,以左是左子树,以右是右子树 break; } Root->lson = Bitree( In, Post, i ); //建立左子树,i代表左子树的节点数; Root->rson = Bitree( In+i+1, Post+i, N-i-1); //建立右子树,中序从第i+1个开始,后序从i开始,节点数为N-i-1; return Root;}void outtree(node* Root){ if(Root!=NULL) { cout << Root->key <<" "; outtree(Root->lson); outtree(Root->rson); }}int main(){ int N; int i; cin >> N; for(i=0; i<N; i++) cin >> post[i]; for(i=0; i<N; i++) cin >> in[i]; node* root = Bitree(in,post,N); // (中序,后序,节点数) outtree(root); cout << endl; return 0;}
1 0
- 后序中序——>前序
- 前序——中序建树
- mongoDB——前序(NoSQL)
- mongoDB——前序(NoSQL)
- mongoDB——前序(NoSQL)
- mongoDB——前序(NoSQL)
- JAVA编程基础——前序
- 数据结构——前序线索二叉树及其前序遍历
- 已知后序中序递归前序
- 前后端分离——前后端数据交互
- shell篇—前篇
- 一路向北——北京(前序)
- SIP学习(一)——前序
- birt开发(一)——前序
- 数据结构——前序线索化二叉树
- 点餐系统(一)——前序
- 我的大学到研究生回顾——前序
- leedcode——二叉树的前序遍历
- HTTP响应头和请求头信息对照表
- 求一组数的所有组合。
- 洛谷 P1969 积木大赛
- 开发者提交产品前需要注意的几个点
- 在Java的Hibernate框架中对数据库数据进行查询操作
- 后序中序——>前序
- Antimonotonicity
- J2EE开发---验证码(二)----kaptcha框架
- RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总
- 【BZOJ1834】[ZJOI2010]network 网络扩容【最大流】【最小费用最大流】【残量网络】
- apache,php常用配置
- java.util.concurrent源码学习四
- {小结}2016.07.14【初中部 NOIP提高组 】模拟赛B
- poj1410 intersection