首页 > 代码库 > hdu--1710--二叉树的各种遍历间的联系
hdu--1710--二叉树的各种遍历间的联系
这题 是给你一个二叉树的 先序和中序遍历 让你推导出 后序遍历
蛮有意思的 ...当然 做这题的前提是要 先明白 二叉树的 先序 与 中序 后序 遍历分别是如何实现的
我这边 懒得提了 =_=
我直接贴上 代码吧 因为这真的是 数据结构的基本要求
你还可以去写下 中序与后序遍历 推导出 先序遍历的代码
我也一并贴上了
1 //通过二叉树的 中序遍历和先序遍历 ---> 后序遍历 2 3 #include <iostream> 4 using namespace std; 5 6 const int size = 1010; 7 int pre[size]; 8 int in[size]; 9 bool flag;10 11 void solve( int* pre , int* in , int len )12 {13 int index = 0;14 if( len>=1 )15 {16 while( index < len && *pre != *(in+index) )17 ++ index;18 solve( pre+1 , in , index );//左子树19 solve( pre+index+1 , in+index+1 , len-(index+1) );//右子树20 if( flag )21 {22 cout << * pre;23 flag = false;24 }25 else26 cout << " " << *pre;27 }28 }29 30 int main()31 {32 cin.sync_with_stdio(false);33 int n;34 while( cin >> n )35 {36 flag = true;37 for( int i = 0 ; i<n ; i++ )38 {39 cin >> pre[i];40 }41 for( int i = 0 ; i<n ; i++ )42 {43 cin >> in[i];44 }45 solve( pre , in , n );46 cout << endl;47 }48 return 0;49 }
1 //通过二叉树的 中序遍历和后序遍历 ---> 先序遍历 2 #include <iostream> 3 using namespace std; 4 5 const int size = 1010; 6 int in[size]; 7 int post[size]; 8 bool flag; 9 10 void solve( int* in , int* post , int len )11 {12 int pos = 0;13 if( len>=1 )14 {15 while( pos<len && *(in+pos) != *(post+len-1) )16 {17 ++ pos;18 }19 if( flag )20 {21 cout << *(in+pos);22 flag = false;23 }24 else25 cout << " " << *(in+pos);26 solve( in , post , pos );//左子树27 solve( in+pos+1 , post+pos , len-pos-1 );//右子树 28 }29 }30 31 int main()32 {33 int n;34 while( cin >> n )35 {36 flag = true;37 for( int i = 0 ; i<n ; i++ )38 cin >> in[i];39 for( int i = 0 ; i<n ; i++ )40 cin >> post[i];41 solve( in , post , n );42 cout << endl;43 }44 return 0;45 }46 /*47 948 4 7 2 1 8 5 9 3 649 7 4 2 8 9 5 6 3 150 51 1 2 4 7 3 5 8 9 652 */
hdu--1710--二叉树的各种遍历间的联系
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。