二叉树表建立、遍历

二叉树表建立、遍历,第1张

二叉树表建立、遍历
  • 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;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/728551.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存