#include<stdio.h>
#include<stdlib.h>
/*二叉树的顺序存储 , 空结点用#代替*/
typedef struct TreeArr{
char *data;
int nodes; //非空结点数量
}TreeArr;
//创建树
TreeArr *createTree(char *datas , int len){
TreeArr *tree = (TreeArr *)malloc(sizeof(TreeArr));
tree->data = (char *)malloc(sizeof(char) * len);
tree->nodes = 0;
int i;
for(i = 0 ; i < len ; i++){
tree->data[i] = datas[i];
if(tree->data[i] != '#'){
tree->nodes++;
}
}
return tree;
}
/*查找某个结点的左右孩子结点*/
char findLchild(TreeArr *T , int index){ //查找下标位于index结点的左孩子的值
return T->data[index] == '#' ? '#' : T->data[(index + 1) * 2 - 1];
//index一定要先加一,因为你传入如果是下标为0的结点(A),如果不先加1,那它的左孩子下标就是0*2-1即-1了,肯定会出错的
}
char findRchild(TreeArr *T , int index){
return T->data[index] == '#' ? '#' : T->data[(index + 1) * 2];
//同理,index要加先加1,若还是不理解,那么就把树的图形画出来,再在结点的旁边标注该节点的下标,你就明白啦
}
/*返回父亲结点值*/
char findParent(TreeArr *T , int index){
return index == 0 ? '\0&