#include<iostream.h>
int i=1;
struct a
{char name,parent;
a *lson,*rson;};
class tree
{public:
tree(){root=creat(root);}
~tree(){release(root);}
void preorder(a*r);
void inorder(a*r);
void postorder(a*r);
void print(a*r);
a *getr(){return root;};
private:
a*root;
a* creat(a*r);
void release(a*r);};
a* tree::creat(a*r)
{char n;
cout<<"请输入节点的名字:";
cin>>n;
if(n=='#') {delete r;return NULL;}
else{
for(i;i<2;i++)
{r=new a;r->parent=NULL;}
r->lson=new a;
r->rson=new a;
r->name=n;
r->lson->parent=n;
r->rson->parent=n;
r->lson=creat(r->lson);
r->rson=creat(r->rson);
}return r;}
void tree::release(a*r)
{if(r!=NULL)
{release(r->lson);
release(r->rson);
delete r;}}
void tree::preorder(a*r)
{if(r==NULL) return;
else{cout<<r->name<<" ";
preorder(r->lson);
preorder(r->rson);
}}
void tree::inorder(a*r)
{if(r==NULL) return;
else{inorder(r->lson);
cout<<r->name<<" ";
inorder(r->rson);
}}
void tree::postorder(a*r)
{if(r==NULL) return;
else{postorder(r->lson);
postorder(r->rson);
cout<<r->name<<" ";
}}
void tree::print(a*r)
{if(r==NULL) return;
else{
cout<<"结点名字:"<<r->name<<endl;
if(r->parent!=NULL)
cout<<"父母名字:"<<r->parent<<endl;
if(r->lson!=NULL)
cout<<"左孩名字:"<<r->lson->name<<endl;
if(r->rson!=NULL)
cout<<"右孩名字:"<<r->rson->name<<endl;
cout<<endl;
print(r->lson);
print(r->rson);}
}
int main()
{tree t;
cout<<"-----------前序遍历-------------"<<endl;
t.preorder(t.getr());
cout<<endl;
cout<<"-----------中序遍历-------------"<<endl;
t.inorder(t.getr());
cout<<endl;
cout<<"-----------后序遍历-------------"<<endl;
t.postorder(t.getr());
cout<<endl;
cout<<"-----------前序输出所有结点信息-------------"<<endl;
t.print(t.getr());
cout<<endl;
return 0;}
int i=1;
struct a
{char name,parent;
a *lson,*rson;};
class tree
{public:
tree(){root=creat(root);}
~tree(){release(root);}
void preorder(a*r);
void inorder(a*r);
void postorder(a*r);
void print(a*r);
a *getr(){return root;};
private:
a*root;
a* creat(a*r);
void release(a*r);};
a* tree::creat(a*r)
{char n;
cout<<"请输入节点的名字:";
cin>>n;
if(n=='#') {delete r;return NULL;}
else{
for(i;i<2;i++)
{r=new a;r->parent=NULL;}
r->lson=new a;
r->rson=new a;
r->name=n;
r->lson->parent=n;
r->rson->parent=n;
r->lson=creat(r->lson);
r->rson=creat(r->rson);
}return r;}
void tree::release(a*r)
{if(r!=NULL)
{release(r->lson);
release(r->rson);
delete r;}}
void tree::preorder(a*r)
{if(r==NULL) return;
else{cout<<r->name<<" ";
preorder(r->lson);
preorder(r->rson);
}}
void tree::inorder(a*r)
{if(r==NULL) return;
else{inorder(r->lson);
cout<<r->name<<" ";
inorder(r->rson);
}}
void tree::postorder(a*r)
{if(r==NULL) return;
else{postorder(r->lson);
postorder(r->rson);
cout<<r->name<<" ";
}}
void tree::print(a*r)
{if(r==NULL) return;
else{
cout<<"结点名字:"<<r->name<<endl;
if(r->parent!=NULL)
cout<<"父母名字:"<<r->parent<<endl;
if(r->lson!=NULL)
cout<<"左孩名字:"<<r->lson->name<<endl;
if(r->rson!=NULL)
cout<<"右孩名字:"<<r->rson->name<<endl;
cout<<endl;
print(r->lson);
print(r->rson);}
}
int main()
{tree t;
cout<<"-----------前序遍历-------------"<<endl;
t.preorder(t.getr());
cout<<endl;
cout<<"-----------中序遍历-------------"<<endl;
t.inorder(t.getr());
cout<<endl;
cout<<"-----------后序遍历-------------"<<endl;
t.postorder(t.getr());
cout<<endl;
cout<<"-----------前序输出所有结点信息-------------"<<endl;
t.print(t.getr());
cout<<endl;
return 0;}