题意明确
代码:
#include<iostream>
using namespace std;
struct Binode{
char data;
Binode* lchild;
Binode* rchild;
};
class Bitree{
private:
Binode *root;
void Release(Binode *bt)
{
if(bt!=NULL)
{
Release(bt->lchild);
Release(bt->rchild);
delete bt;
}
}
void PreOrder(Binode *bt)
{
if(bt==NULL)
return;
else
{
cout<<bt->data;
PreOrder(bt->lchild);
PreOrder(bt->rchild);
}
}
Binode* Creat(char *a,int pre,int size)
{
char ch;
char* p=a;
Binode* t;
ch=p[pre];
if(ch=='#'||pre>=size)
return NULL;
else
{
t=new Binode;
t->data=ch;
t->lchild=Creat(p,2*pre+1,size);
t->rchild=Creat(p,2*pre+2,size);
}
return t;
}
public:
Bitree(char *a,int pre,int size)
{
root=Creat(a,pre,size);
}
~Bitree()
{
Release(root);
}
void PreOrder()
{
PreOrder(root);
}
};
int main()
{
int T;
cin>>T;
while(T--)
{
char a[100];
cin>>a;
if(a[0]=='#')
continue;
Bitree A(a,0,strlen(a));
A.PreOrder();
cout<<endl;
}
return 0;
}