数据结构 二叉树的互相遍历求法

来源:互联网 发布:上海软件定制公司 编辑:程序博客网 时间:2024/05/17 08:36

一丶已知前序遍历,中序遍历, 求后序遍历 

(这里将读入调换,函数不变,已知中序遍历,前序遍历,求后序遍历 结果一样)

代码:


#include <bits/stdc++.h>int t1[5000] , t2[5000] ;using namespace std ;void build(int a , int b , int n , int flag){if(n==1) {printf("%d ",t1[a]);return ;}else if(n<=0) return ;int i = 0 ;while(t1[a]!=t2[b+i]) i++;build(a+1,b,i,0);build(a+i+1,b+i+1,n-i-1,0);if(flag==1) printf("%d",t1[a]);else printf("%d ",t1[a]);}int main(){int n ;while(cin>>n){for(int i = 1 ; i <= n ; i++) cin>>t1[i]; //*前序for(int i = 1 ; i <=n ; i++)  cin>>t2[i] ;//*中序build(1,1,n,1); //*前+中 == 后 printf("\n");}}

二、已知中序,后序,求前序

#include <bits/stdc++.h>using namespace std ;int t1[5000] , t2[5000] ;void build(int a , int b , int n , int flag){if(n==1) {printf(" %d",t1[a]);return ;}else if(n<=0) return ;if(flag==1){printf("%d",t1[a]);}else printf(" %d",t1[a]);int i = 0 ;while(t1[a]!=t2[b+i]) i++;build(a-n+i,b,i,0);build(a-1,b+i+1,n-i-1,0);}int main(){int n ;while(cin>>n){for(int i = 1 ; i<=n ; i++) cin>>t1[i] ; //*中序 for(int i = 1 ; i<=n ; i++) cin>>t2[i] ; //*后序build(n,1,n,1) ;printf("\n");}}



0 0
原创粉丝点击