二叉树结构类型定义如下:
struct BTNode {
char data;
struct BTNode *lChild;
struct BTNode *rChild;
};
先序+后序构建二叉树代码如下:
struct BTNode *createWithMidAndPre(struct BTNode *root,
char *preSet,
char *midSet,
int sSize) {
if (0 == sSize)
return NULL;
root = (struct BTNode *) malloc(sizeof(struct BTNode));
root->data = preSet[0];
root->lChild = NULL;
root->rChild = NULL;
int p = 0;
while (p < sSize) {
if (midSet[p] == preSet[0])
break;
p++;
}
if (p == sSize) {
printf("序列异常,构建终止.");
exit(EXIT_FAILURE);
}
int leftSize = p;
int rightSize = sSize - p - 1;
root->lChild = createWithMidAndPre(root->lChild,
preSet + 1, midSet, leftSize);
root->rChild = createWithMidAndPre(root->rChild,
preSet + leftSize + 1,
midSet + leftSize + 1,
rightSize);
return root;
};