一个非常简单的二叉树的题目,就是考察简单构树,输出树的知识。
#include
#include
#include
using namespace std;
const int maxn=501;
char a[maxn][maxn];
struct
{
int left,right;
char data;
}tr[10001];
int sum;
int insert(char s)
{
int t=1,tmp;
while(1)
{
if(s>tr[t].data)
tmp=tr[t].right;
else tmp=tr[t].left;
if(tmp==0)
{
tr[++sum].data=s;
if(s>tr[t].data)
tr[t].right=sum;
else
tr[t].left=sum;
break;
}
t=tmp;
}
}
int preprin(int t)
{
if(tr[t].data==0)
return(0);
printf("%c",tr[t].data);
preprin(tr[t].left);
preprin(tr[t].right);
}
int main()
{
while(1)
{
int lon=0;
while(scanf("%s",&a[++lon][1]),a[lon][1]!='*'&&a[lon][1]!='$')
;
memset(tr,0,sizeof(tr));
lon--;
tr[1].data=a[lon][1];
sum=1;
for(int i=lon-1;i>=1;i--)
{
for(int
j=1;j<=strlen(&a[i][1]);j++)
insert(a[i][j]);
}
preprin(1);
printf("\n");
if(a[lon+1][1]=='$') break;
}
return 0;
}