truct binarytree{
Elementtype value;
struct *left,*right;
}
typedef struct binarytree *Position;
Position PostorderAndInorder(int postorder[],int inorder[],int n){
if(n == 0){
return NULL;
}
Position t;
t = (Position)malloc(sizeof(struct binarytree));
if(t == NULL){
perror("Out Of Space\n");
return NULL;
}
t->value = postorder[n-1];
int i;
for(i = 0;i<n;i++)
if(inorder[i] == t->value)
break;
t->left = PostToPre(postorder,inorder,i);
t->right = PostToPre(postorder+i,inorder+i+1,n-i-1);
return t;
}
Position PreorderAndInorder(int preorder[],int inorder[],int n){
if(n == 0){
return NULL;
}
Position t;
t = (Position)malloc(sizeof(struct binarytree));
if(t == NULL){
perror("Out Of Space\n");
return NULL;
}
t->value = preorder[0];
int i;
for(i = 0;i<n;i++)
if(t->value == inorder[i])
break;
t->left = PreorderAndInorder(preorder+1,inorder,i);
t->right = PreorderAndInorder(preorder+i+1,inorder+i+1,n-i-1);
return t;
}