二叉树的基本练习题,比较简单吧,只是对输入数据处理以及对树的建立注意下就可以了。
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
struct node
{
int lchild;
int rchild;
char val;
}t[1000];
char str[1000];
int n;
void Add(int index,char val)
{
if(t[index].val==0)
{
t[index].val=val;
return ;
}
else if(t[index].val<val)
{
if(!t[index].rchild)
t[index].rchild=n++;
Add(t[index].rchild,val);
}
else
{
if(!t[index].lchild)
t[index].lchild=n++;
Add(t[index].lchild,val);
}
}
void DisplayTree(int index)
{
if(t[index].val==0)
return;
printf("%c",t[index].val);
if(t[index].lchild)
DisplayTree(t[index].lchild);
if(t[index].rchild)
DisplayTree(t[index].rchild);
}
int main()
{
while(scanf("%s",str)!=EOF)
{
int len=strlen(str);
char ch;
n=2;
memset(t,0,sizeof(t));
while(1)
{
scanf("%c",&ch);
if(ch>='A'&&ch<='Z')
str[len++]=ch;
else if(ch=='*'||ch=='$')
break;
}
for(int i=len-1;i>=0;i--)
Add(1,str[i]);
DisplayTree(1);
printf("\n");
if(ch=='$')
break;
}
return 0;
}