由后序遍历和中序遍历
node* makeTree(int* in, int* post, int len){
if(len){
int root=0;
for(;root<len;root++)
if(in[root]==post[len-1])
break;
node* p=new node(post[len-1],makeTree(in,post,root),makeTree(in+root+1,post+root,len-(root+1)));
return p;
}else return NULL;
}
由前序遍历和中序遍历
node* makeTree(dataType* pre,dataType* in,int n){
if(n){
dataType* p=in;
int k=0;
for(;*pre!=*p;++p,++k);//在中序序列中找根
node* t=new node(*pre,makeTree(pre+1,in,k),makeTree(pre+k+1,in+k+1,n-k-1));
return t;
}else return NULL;
}