码迷,mamicode.com
首页 > 其他好文 > 详细

hdu--1710--二叉树的各种遍历间的联系

时间:2014-10-29 21:06:25      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   os   ar   for   sp   

这题 是给你一个二叉树的 先序和中序遍历 让你推导出 后序遍历

蛮有意思的 ...当然 做这题的前提是要 先明白 二叉树的 先序 与 中序 后序 遍历分别是如何实现的

我这边 懒得提了 =_=

我直接贴上 代码吧   因为这真的是 数据结构的基本要求

你还可以去写下 中序与后序遍历 推导出 先序遍历的代码

我也一并贴上了

bubuko.com,布布扣
 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         else
26             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 }
View Code

 

bubuko.com,布布扣
 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         else
25             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 9
48 4 7 2 1 8 5 9 3 6
49 7 4 2 8 9 5 6 3 1
50 
51 1 2 4 7 3 5 8 9 6
52 */
View Code

 

hdu--1710--二叉树的各种遍历间的联系

标签:style   blog   http   io   color   os   ar   for   sp   

原文地址:http://www.cnblogs.com/radical/p/4060356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!