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

二叉树

时间:2017-01-22 11:55:45      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:end   int   color   pre   div   char   namespace   data   ++   

 1 #include <iostream>
 2 using namespace std;
 3 #define SIZE 9
 4 
 5 char data[SIZE+1]={0};
 6 char pre[SIZE]={A,B,D,H,I,E,C,F,G};
 7 char mid[SIZE]={H,D,I,B,E,A,F,C,G};
 8 void preOrder(int N);
 9 void midOrder(int N);
10 void backOrder(int N);
11 void seek(int l,int r,int n,int R);
12 int main()
13 {
14     
15     seek(0,0,SIZE,1);
16     for(int i=1;i<=SIZE;i++)
17     {
18         cout <<data[i];
19     }
20     cout <<endl;
21     backOrder(1);
22     return 0;
23 }
24 
25 void seek(int l,int r,int n,int R)
26 {
27     int i;
28     int root=0;
29     i=r;
30     
31     if(n<=0)
32         return;
33     data[R]=pre[l];
34     while(mid[i]!=pre[l])
35     {
36         i++;
37         root++;
38     }
39     
40     seek(l+1,r,root,2*R);
41     seek(l+root+1,r+root+1,n-root-1,2*R+1);
42 }
43     
44 
45 
46 
47 
48 void preOrder(int N)
49 {
50     if(2*N>=SIZE+1)
51     {
52         cout << data[N];
53         return;
54     }
55     cout <<data[N];
56     preOrder(N*2);
57     if(2*N+1>=SIZE+1)
58     {
59         return;
60     }
61     preOrder(N*2+1);
62 }
63 void midOrder(int N)
64 {
65     if(2*N>=SIZE+1)
66     {
67         cout << data[N];
68         return;
69     }
70     midOrder(N*2);
71     cout << data[N];
72     if(2*N+1>=SIZE+1)
73     {
74         return;
75     }
76     midOrder(N*2+1);
77 }
78 void backOrder(int N)
79 {
80     if(2*N>=SIZE+1)
81     {
82         cout << data[N];
83         return;
84     }
85     backOrder(N*2);
86     if(2*N+1>=SIZE+1)
87     {
88         cout << data[N];
89         return;
90     }
91     backOrder(N*2+1);
92     cout << data[N];
93 }

 

二叉树

标签:end   int   color   pre   div   char   namespace   data   ++   

原文地址:http://www.cnblogs.com/jintg/p/6339752.html

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