二叉树基本操作实现(二叉树的顺序存储)

 

 1 #include <iostream>
 2 using namespace std;
 3 
 4 typedef struct  
 5 {
 6     int data[100];
 7     int length;
 8 }bintree;
 9 
10 void init_tree(bintree *ptree, int *input, int len)
11 {
12     int i;
13     for(i = 0; i < 100; ++i)
14     {
15         if(i < len)
16             ptree->data[i] = input[i];
17         else
18             ptree->data[i] = -1;
19     }
20     ptree->length = len;
21     return ;
22 }
23 int find_lson(bintree *ptree, int x)
24 {
25     int i = 0;
26     while(ptree->data[i] != x && i < ptree->length)
27     {
28         ++i;
29     }
30     if(i >= ptree->length)
31     {
32         cout << "can not find!!!"<< endl;
33         return -1;
34     }
35     return 2 * i + 1;
36 }
37 
38 int find_rson(bintree *ptree, int x)
39 {
40     int i = 0;
41     while(ptree->data[i] != x && i < ptree->length)
42     {
43         ++i;
44     }
45     if(i >= ptree->length)
46     {
47         cout << "can not find!!!" << endl;
48         return -1;
49     }
50     return 2 * i + 2;
51 }
52 
53 int is_empty(bintree *ptree)
54 {
55     return ptree->length == 0 ? 1 : 0;
56 }
57 
58 void forward_traverse(bintree *ptree, int i)
59 {
60     if(ptree->data[i] == -1)
61         return ;
62     else
63     {
64         //cout << ptree->data[i] << "\t";
65         forward_traverse(ptree, i * 2 + 1);
66         forward_traverse(ptree, i * 2 + 2);cout << ptree->data[i] << "\t";
67     }
68 }
69 
70 int main()
71 {
72     bintree *ptree = (bintree *)malloc(sizeof(bintree));
73     int input[] = {1,2,3,4,5};
74     int len = sizeof(input)/sizeof(int);
75     init_tree(ptree, input, len);
76     cout << "find lson: " << ptree->data[find_rson(ptree, 2)] << endl; 
77     cout << "is empty " << is_empty(ptree) << endl;
78     forward_traverse(ptree, 0);
79     return 0;
80 }
posted @ 2012-08-25 15:52  sinaxyz  阅读(642)  评论(0编辑  收藏  举报