#include <iostream>
using namespace std;
struct BitNode
{
char data;
BitNode *lchild;
BitNode *rchild;
};
void create(BitNode *&T)
{
char ch;
cin>>ch;
if(ch=='#')
T=NULL;
else
{
T=new BitNode;
T->data=ch;
create(T->lchild);
create(T->rchild);
}
}
void proOrder(BitNode *T)
{
if(T)
{
cout<<T->data<<" ";
proOrder(T->lchild);
proOrder(T->rchild);
}
}
using namespace std;
struct BitNode
{
char data;
BitNode *lchild;
BitNode *rchild;
};
void create(BitNode *&T)
{
char ch;
cin>>ch;
if(ch=='#')
T=NULL;
else
{
T=new BitNode;
T->data=ch;
create(T->lchild);
create(T->rchild);
}
}
void proOrder(BitNode *T)
{
if(T)
{
cout<<T->data<<" ";
proOrder(T->lchild);
proOrder(T->rchild);
}
}
void copyTree(BitNode *T,BitNode *&newT)
{
if(T==NULL)
{
newT=NULL;
}
else
{
newT=new BitNode;
newT->data=T->data;
copyTree(T->lchild,newT->lchild);
copyTree(T->rchild,newT->rchild);
}
}
int main()
{
BitNode *T1,*T2;
create(T1);
copyTree(T1,T2);
proOrder(T2);
}