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 }