#include <stdio.h>
struct TTree{
char**mas;
int cur, len;
};
void go_left(TTree &T) { T.cur*=2; return;}
void go_right(TTree &T) { T.cur*=2; T.cur++; return;}
void go_up(TTree &T) { T.cur/=2; return;}
bool is_curtree_empty(TTree &T) { if (T.mas[T.cur]==NULL) return true; return false;}
char* get_cur(TTree &T){ return T.mas[T.cur];}
void vert_tree(TTree &T, int lair = 1){
if (is_curtree_empty(T)) printf("%*s%s\n",lair*5,"-----","**");
else { char ch=0;
printf("%*s%s\n",lair*5,"-----", get_cur(T));
go_left(T); vert_tree(T, lair+1); go_up(T);
go_right(T); vert_tree(T, lair+1); go_up(T);
}
}
int main()
{
printf("TP Tree\n");
char* treeArray[]={NULL, "Иван",
"Петр", "Мария",
"Алексей", "Елена", NULL, "Ольга",
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
TTree T1 = {treeArray, 1, 16};
vert_tree(T1);
return 0;
}