#include <stdio.h>
#include <string.h>
typedef struct Node
{
char e;
Node *lchild,*rchild;
}Nodue,*BiTree;
void PostOrder(BiTree T)
{
if (T)
{
if (T->lchild)
PostOrder(T->lchild);
if (T->rchild)
PostOrder(T->rchild);
printf("%c",T->e);
}
}
int GetPos(char Pre[],char In[],int n)
{
int i=0;
for (i=0;i<n;i++)
if (Pre[0]==In[i])
break;
return i;
}
void Build(BiTree &T,char Pre[],char In[],int n)
{
int flag=0,i,j;
char Pre1[27],Pre2[27],In1[27],In2[27];
if (n==0)
{
T=NULL;
return;
}
if (n!=0)
{
T=new Node;
T->e=Pre[0];
flag=GetPos(Pre,In,n);
for (i=0,j=1;i<flag;i++,j++)
Pre1[i]=Pre[j];
Pre1[i]='\0';
for (i=0,j=flag+1;j<n;i++,j++)
Pre2[i]=Pre[j];
Pre2[i]='\0';
for (i=0,j=0;i<flag;i++,j++)
In1[i]=In[j];
In1[i]='\0';
for (i=0,j=flag+1;i<n;i++,j++)
In2[i]=In[j];
In2[i]='\0';
Build(T->lchild,Pre1,In1,flag);
Build(T->rchild,Pre2,In2,n-flag-1);
}
}
int main()
{
char Pre[27],In[27];
BiTree T=NULL;
while(scanf("%s%s",Pre,In)!=EOF)
{
Build(T,Pre,In,strlen(Pre));
PostOrder(T);
printf("\n");
}
return 1;
<p>}</p><p>这道题研究了很久,虽然有思路,但是就不知道怎么弄,功夫不负有心人,不怕它,慢慢来。虽然编的有点麻烦了,但总是AC了哈哈!</p>
(题目32)题目1078:二叉树遍历
最新推荐文章于 2024-04-24 21:40:09 发布