1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
typedef struct BTNode{ int data; struct BTNode *lchild,*rchild; }BTNode,*BiTree; BiTree CreateTree(int pre[],int l1,int r1,int in[],int l2,int r2){ BiTree root=(BiTree)malloc(sizeof(BTNode)); root->data=pre[l1]; int i; for(i=l2;i<=r2;i++){ if(in[i]==pre[l1])break; } int llen=i-l2; int rlen=r2-i; if(llen==0){ root->lchild=NULL; }else{ root->lchild=CreateTree(pre,l1+1,l1+llen,in,l2,l2+llen-1); } if(rlen==0){ root->rchild=NULL; }else{ root->rchild=CreateTree(pre,r1-rlen+1,r1,in,r2-rlen+1,r2); } return root; }
|