- 1)理解二叉树的基本结构
- 2)编程实现二叉树的构造、前序、中序、后序、层序遍历等基本功能
#include
using namespace std;
struct node
{
char data;
node *child1,*child2;
};
class xbb
{
public:
xbb(){r=creat(r);};
~xbb();
void qianxu(){cout<<"\n前序遍历:";qianxu(r);cout<<endl;}; //前序
void zhongxu(){cout<<"中序遍历:";zhongxu(r);cout<<endl;}; //中序 遍
void houxu(){cout<<"后序遍历:";houxu(r);cout<<endl;}; //后序 历
void cengxu(); //层序
private:
node *r;
node *creat(node* b);
void qianxu(node *b);
void zhongxu(node *b);
void houxu(node *b);
};
xbb::~xbb()
{
node *p,*g[100];
int front=-1,rear=0;
g[0]=r;
while(front!=rear)
{
if(front!=-1)delete p;
p=g[++front];
if(p->child1!=NULL)g[++rear]=p->child1;
if(p->child2!=NULL)g[++rear]=p->child2;
}
}
node *xbb::creat(node *b)
{
char ch;
cout<<"请输入信息(‘#’表示截止):";
cin>>ch;
if(ch=='#')b=NULL;
else
{
b=new node;
b->data=ch;
b->child1=creat(b->child1);
b->child2=creat(b->child2);
}
return b;
}
void xbb::qianxu(node *b)
{
if(b==NULL)return;
else
{
cout<<b->data;
qianxu(b->child1);
qianxu(b->child2);
}
}
void xbb::zhongxu(node *b)
{
if(b==NULL)return;
else
{
zhongxu(b->child1);
cout<<b->data;
zhongxu(b->child2);
}
}
void xbb::houxu(node *b)
{
if(b==NULL)return;
else
{
houxu(b->child1);
houxu(b->child2);
cout<<b->data;
}
}
void xbb::cengxu()
{
cout<<"层序遍历:";
node *p,*g[100];
int front=-1,rear=0;
g[0]=r;
while(front!=rear)
{
p=g[++front];
cout<<p->data;
if(p->child1!=NULL)g[++rear]=p->child1;
if(p->child2!=NULL)g[++rear]=p->child2;
}
cout<<"\n"<<endl;
}
int main()
{
xbb l;
l.qianxu();
l.zhongxu();
l.houxu();
l.cengxu();
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)