先序 中序
BiTNode* CreateBT1(char* pre, char* in, int n) { BiTNode* s; char* p; int k; if (n <= 0)return NULL; s = (BiTNode*)malloc(sizeof(BiTNode)); s->data = *pre; for (p = in; p < in + n; p++) { if (*p == *pre) break; } k = p - in; s->lchild = CreateBT1(pre + 1, in, k); s->rchild = CreateBT1(pre + k + 1, p + 1, n - k - 1); return s; }
中序,后序
BTNode* CreateBT2(char* post, char* in, int n) { BTNode* s; char* p, r; int k; if (n == 0)return NULL; r = *(post + n - 1); s = (BTNode*)malloc(sizeof(BTNode)); s->data = r; for (p = in; p < in + n; p++) { if (*p == r) break; } k = p - in; s->lchild = CreateBT2(post, in, k); s->rchild = CreateBT2(post + k, p+1, n - k - 1); return s; }
原文:https://www.cnblogs.com/KIROsola/p/12061689.html