中国大学MOOC-陈越、何钦铭-数据结构-2015秋 03-树3 Tree Traversals Again (25分)
2015-09-26 16:45
671 查看
题目传送门~
下面再给出本题的ac代码
这道题的本意是给定一颗二叉树的先序和中序序列,如何得到这颗二叉树的后序遍历序列,这个问题已经很古老了,然而今天是第一次写,想通了遍历的原理,很容易写出递归版本的求后序序列的函数,至于先序和中序可以从给定的数据获得,即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 -9999999 typedef 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]); }
相关文章推荐
- iOS ——XML数据结构及其两种解析数据的方式SAX 、DOM
- 【软考之路】-数据结构
- 数据结构中的概念问题
- 数据结构与算法 Big O 备忘录与现实
- 软考---数据结构
- 数据结构和算法
- 数据结构学习---中缀表达式转后缀表达式
- 数据结构学习---中缀表达式转后缀表达式
- 【数据结构与算法】Hash表
- 数据结构与算法学习
- 《数据结构》——排序
- Catch That Cow
- 11991 - Easy Problem from Rujia Liu?(的基础数据结构)
- 数据结构 尾插法
- 数据结构概述
- Java Map数据结构与排序
- 抽象数据结构
- OC基础-OC三大基本数据结构-NSDictionary
- Kefa and Company
- 重学数据结构-队列、串、多维数组、广义表