链二叉树

#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;}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值