1.先序,中序
BiTree creat(int* A, int* B,int l1,int r1,int l2,int r2) {
BiTree T=new BiTNode;
T->data = A[l1];
int fen = l2;
while (B[fen] != T->data) fen++;
if (fen > l2) T->lchild = creat(A, B, l1 + 1, l1 + fen - l2, l2, fen - 1);
else T->lchild = NULL;
if (fen < r2) T->rchild = creat(A, B, l1 + fen - l2 + 1, r1, fen + 1, r2);
else T->rchild = NULL;
return T;
}
2.中序,后序
BiTree creat(int* A, int* B, int l1, int r1, int l2, int r2) {//A后序,B中序
BiTree T=new BiTNode;
T->data = A[r1];
int fen = l2;
while (B[fen] != T->data) fen++;
if (fen > l2) T->lchild = creat(A, B, l1, l1 + fen - l2-1, l2, fen - 1);
else T->lchild = NULL;
if (fen < r2) T->rchild = creat(A, B, l1 + fen - l2, r1-1, fen + 1, r2);
else T->rchild = NULL;
return T;
}