#include <iostream>
using namespace std;
#define Elemtype char
#define maxSize 100
typedef struct{
Elemtype data[maxSize+1];
int length;
}seqBiTree;
int initSeqBiTree(seqBiTree &T) {
T.length = 0;
}
bool createSeqBiTree(seqBiTree &T, Elemtype tree[], int n) {
if(tree == NULL) return false;
else {
for(int i = 1; i <= n; i ++) {
T.data[i] = tree[i-1];
T.length ++;
}
}
}
bool getLeftChild(seqBiTree T, int i, Elemtype &e) {
if(i <= T.length/2) {
e = T.data[i*2];
return true;
}
else return false;
}
bool getRightChild(seqBiTree T, int i, Elemtype &e) {
if(i > T.length/2 || (i == T.length && T.length % 2 == 0)) return false;
else {
e = T.data[i*2+1];
return true;
}
}
void outputSeqBiTree(seqBiTree T) {
for(int i = 1; i <= T.length; i ++) {
cout << T.data[i] << " ";
}
cout << endl;
}
int main() {
char tree[] = {'a', 'b', 'c', 'd'};
seqBiTree T;
initSeqBiTree(T);
createSeqBiTree(T, tree, 4);
Elemtype e;
getLeftChild(T, 2, e);
cout << e << endl;
getRightChild(T, 2, e);
cout << e << endl;
outputSeqBiTree(T);
cout << T.length;
return 0;
}