C++根据输入的二叉树前序和中序序列生成二叉树并输出后序遍历数列

请发送到我的邮箱里好吗[email protected]谢谢啦

第1个回答  2013-05-03
void restoretree(BiNode<T> *&bt,T *preo,T *ino,int n)
{
if(n <= 0) return ;
bt = new BiNode<T>();
T *p;
int k;
bt->data = *preo;
for(p = ino; p < ino + n; ++p)
if(*p == *preo) break;
k = p - ino;
restoretree(bt->left,preo+1,ino,k);
restoretree(bt->right,preo+k+1,p+1,n-k-1);
}
第2个回答  2012-05-04
int FindStr(char *,char);

BiTreeNode Create_PI_Item(char *pre,char *in)
{
if('\0'==*pre||'\0'==*in)return NULL;
else
{
char *pp=new char[strlen(pre)+1];
char *ii=new char[strlen(pre)+1];
BiTreeNode root=BuyNode();
root->elem=*pre;
int local=FindStr(in,*pre);
strncpy(pp,pre+1,local);
pp[local]='\0';
strncpy(ii,in,local);
ii[local]='\0';
root->LfChild=Create_PI_Item(pp,ii);
strcpy(pp,pre+local+1);
strcpy(ii,in+local+1);
root->RgChild=Create_PI_Item(pp,ii);
delete []pp;
delete []ii;
return root;
}
}

int FindStr(char *S,char ch)
{
if(S!=NULL && *S!='\0')
{
for(int i=0;i<(int)strlen(S);++i)
{
if(S[i]==ch)
{
return i;
}
}
}
return -1;
}本回答被网友采纳
相似回答