谢谢,解答就采纳
BiTree PreInOrder (char preord[ ],char inord[ ],int i,int j,int k,int h);
void show(BiTree bt);
int main()
{
BiTree t;
int i,j,k,h;
char preord[26],inord[26];
for(int i=1;i<=2;i++)
{
i=1;
k=1;
gets(preord);
gets(inord);
j=strlen(preord);
h=strlen(inord);
PreInOrder(preord,inord,i,j,k,h);
show(t);
}
}
BiTree PreInOrder (char preord[ ] , char inord[ ] , int i , int j , int k , int h)
{ /* 先序序列中从i到j,中序序列中从k到h,建立一棵二叉树放在*t中 */
BiTree t;
int m ;
t =(BiTreeNode )malloc(sizeof(BiTreeNode));
t -> data = preord[i] ;
m = k ;
while ( inord[m] != preord[i] ) m++ ; /在中序序列中定位根结点/
/ 递归调用建立左子树 */
if (m == k ) t-> lchild =NULL ; /*左子树空 /
else
t-> lchild =PreInOrder ( preord , inord , i+1 , i+m-k , k , m-1 );
/ 递归调用建立右子树 /
if ( m == h ) t -> rchild = NULL ; / 右子树空 */
else
t -> rchild =PreInOrder ( preord , inord , i+m-k+1 , j , m+1 , h);
return t;
}
void show(BiTree t) //递归中序遍历二叉树
{
if(t)
{
show(t->lchild);
show(t->rchild);
printf("%c",t->data);
}
}