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 }