编译错误,,大神帮我改一下
#include<iostream>#include<string>
using namespace std;
typedef struct ElemType{
char key;
}ElemType;
typedef struct BSTNode{
ElemType data; //结点数据域
BSTNode *lchild, *rchild; //左右孩子指针
}BSTNode, *BSTree;
//算法7.5 二叉排序树的插入
void InsertBST(BSTree &T, ElemType e) {
//当二叉排序树T中不存在关键字等于e.key的数据元素时,则插入该元素
if (!T) { //找到插入位置,递归结束
BSTree S = new BSTNode; //生成新结点*S
S->data = e; //新结点*S的数据域置为e
S->lchild = S->rchild = NULL; //新结点*S作为叶子结点
T = S; //把新结点*S链接到已找到的插入位置
}
else if (e.key< T->data.key)
InsertBST(T->lchild, e); //将*S插入左子树
else if (e.key> T->data.key)
InsertBST(T->rchild, e); //将*S插入右子树
}// InsertBST
void CreateBST(BSTree T){
T = NULL;
ElemType e;
string str;
cin >> str;
for (int i=0;i<str.length();i++)
{
e.key = str[i];
InsertBST(T, e);
}
}//CreatBST
int XianXu(BSTree T,char a[])
{
int j=0;
if (T)
{
a[j] = T->data.key;
j++;
XianXu(T->lchild,a);
XianXu(T->rchild,a);
}
return j;
}
int ZhongXu(BSTree T,char b[])
{
int k=0;
if(T)
{
ZhongXu(T->lchild,b);
b[k]=T->data.key;
k++;
ZhongXu(T->rchild,b);
}
return k;
}
int main()
{
char a[11],b[11],d[11],f[11];
int i,n,m,X,Y,len_a,len_b,len_d,len_f;
BSTree T;
CreateBST(T);
len_a=XianXu(T,a);
len_b=ZhongXu(T,b);
cin>>n;
for(m=0;m<n;m++)
{
T = NULL;
ElemType e;
string text;
cin>>text;
BSTree T;
CreateBST(T) ;
len_d=XianXu(T,d);
len_f=ZhongXu(T,f);
for(i=0;i<len_a;i++)
for(i=0;i<len_d;i++)
{
if(a[i]!=d[i])
{
X=0;
break;
}
else
X=1;
}
for(i=0;i<len_b;i++)
for(i=0;i<len_f;i++)
{
if(b[i]!=f[i])
{
Y=0;
break;
}
else
Y=1;
}
if(X==1&&Y==1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}