中国大学MOOC-陈越、何钦铭-数据结构-2015秋 03-树3 Tree Traversals Again (25分)
来源:互联网 发布:模拟炒股软件手机版 编辑:程序博客网 时间:2024/05/29 13:02
题目传送门~
这道题的本意是给定一颗二叉树的先序和中序序列,如何得到这颗二叉树的后序遍历序列,这个问题已经很古老了,然而今天是第一次写,想通了遍历的原理,很容易写出递归版本的求后序序列的函数,至于先序和中序可以从给定的数据获得,即push代表就是先序,pop代表的是中序,不懂请call陈越姥姥。
先给出递归版本求后序遍历的递归函数版本。 void Build(int *pre,int *in,int n){ if(n==0) { return ; } int i; int c=pre[0]; for(i=0;i<n;i++) { if(c==in[i]) break; } Build(pre+1,in,i);///pre+1代表左子树的头结点,i代表左子树的长度,in代表中序左子树的头结点 Build(pre+i+1,in+i+1,n-i-1);///pre+i+1代表右子树的根,n-i-1代表右子树的长度,in+i+1代表中序右子树的头结点 q.push(pre[0]);}
下面再给出本题的ac代码
///此题还可以简化,自己可以试一试,不用堆栈的解法。/// @author just_sort/// 2015/9/24 10:43/// water~#include<cstdio>#include<cstring>#include<vector>#include<set>#include<cmath>#include<queue>#include<stack>#include<algorithm>#include<ctype.h>#include<cstdlib>#include<iostream>using namespace std;typedef long long LL;#define lowbit(x) x&(-x)#define INF 0x7fffffff#define UNF -9999999typedef long long LL;/*****I am swimming*****/queue<int>q;int pre[35],in[35];void Build(int *pre,int *in,int n);int main(){ string ss; int n; stack<int>s; cin>>n; n*=2; int cnt1=0,cnt2=0; for(int i=0;i<n;i++) { cin>>ss; if(ss=="Push") { scanf("%d",&pre[cnt1]); s.push(pre[cnt1++]); } else { in[cnt2++]=s.top(); s.pop(); } } ///已知先序和中序,求后序 Build(pre,in,n/2); printf("%d",q.front()); q.pop(); while(!q.empty()) { printf(" %d",q.front()); q.pop(); } //system("pause"); return 0;}void Build(int *pre,int *in,int n){ if(n==0) { return ; } int i; int c=pre[0]; for(i=0;i<n;i++) { if(c==in[i]) break; } Build(pre+1,in,i);///pre+1代表左子树的头结点,i代表左子树的长度,in代表中序左子树的头结点 Build(pre+i+1,in+i+1,n-i-1);///pre+i+1代表右子树的根,n-i-1代表右子树的长度,in+i+1代表中序右子树的头结点 q.push(pre[0]);}
0 0
- 中国大学MOOC-陈越、何钦铭-数据结构-2015秋 03-树3 Tree Traversals Again (25分)
- 中国大学MOOC-陈越、何钦铭-数据结构-2017秋03-树3 Tree Traversals Again(25 point(s))
- 中国大学MOOC-陈越、何钦铭-数据结构 Tree Traversals Again
- 中国大学MOOC-陈越、何钦铭-数据结构-2015秋 01-复杂度2 Maximum Subsequence Sum (25分)
- 中国大学MOOC-陈越、何钦铭-数据结构-2017秋 03-树1 树的同构(25 point(s))
- 中国大学MOOC-陈越、何钦铭-数据结构-2017秋 03-树2 List Leaves(25 point(s))
- 中国大学MOOC-陈越、何钦铭-数据结构 Root of AVL Tree
- 中国大学MOOC-陈越、何钦铭-数据结构 List Leaves
- 中国大学MOOC-陈越、何钦铭-数据结构 File Transfer
- 中国大学MOOC-陈越、何钦铭-数据结构 统计工龄
- 中国大学MOOC-陈越、何钦铭-数据结构-2017春
- 中国大学MOOC-陈越、何钦铭-数据结构-2016秋2题
- 中国大学MOOC-陈越、何钦铭-数据结构-2016秋期中考试
- 中国大学MOOC-陈越、何钦铭-数据结构-2016秋期中考试
- 中国大学MOOC-陈越、何钦铭-数据结构-2016秋期末考试
- 中国大学MOOC-陈越、何钦铭-数据结构-2017秋 02-线性结构4 Pop Sequence
- 【中国大学MOOC-陈越、何钦铭-数据结构-2017秋】最大子列和问题
- 中国大学MOOC-陈越、何钦铭-数据结构 树的同构
- 对比synchronized与java.util.concurrent.locks.Lock 的异同
- Android项目源码运行不起来的七种解决方法
- 智慧银行不再“面对面”它比ATM聪明 它叫VTM
- iOS开发:UIWebView
- Python包管理pip工具在Mac OSX10.10上的安装及lxml安装错误的解决办法
- 中国大学MOOC-陈越、何钦铭-数据结构-2015秋 03-树3 Tree Traversals Again (25分)
- HTML如何在图片上添加内容(如文字,菜单栏,按钮等)
- Genymotion模拟
- linux JDK 安装无法建立连接的问题解决 wget方法后面再说
- 结构体数组
- 请关闭你的“等死模式”
- RDF-资源描述框架
- 在Myeclipse中移除项目对Hibernate的支持
- poj 1845