先序和中序
tree*creat(char *first,char *mid,int n)
{
if(n<=0)
{
return NULL;
}
struct node*root;
root=(tree*)malloc(sizeof(tree));
root->data=first[0];
int k;
for(k=0;k<n;k++)
{
if(mid[k]==first[0])
{
break;
}
}
root->left=creat(first+1,mid,k);
root->right=creat(first+k+1,mid+k+1,n-k-1);
return root;
}
中序和后序
tree*creat(char *mid,char *last,int n)
{
struct node*root;
if(n<=0)
{
return NULL;
}
else
{
root=(tree*)malloc(sizeof(tree));
root->data=last[n-1];
int i;
for(i=0; i<n; i++)
{
if(mid[i]==last[n-1])
{
break;
}
}
root->left=creat(mid,last,i);
root->right=creat(mid+i+1,last+i,n-i-1);
}
return root;
}