⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 二叉树应用--我.cpp

📁 最近的课程设计 翻出来大家给看看 多提宝贵意见
💻 CPP
字号:
#include <iostream.h>
typedef struct bitnode
{
	char data;
	struct bitnode *lchild,*rchild;
}bitnode ,*bitree;
//建立二叉树二叉链表存储
void createbitree(bitree *t)
{
	//以加入结点的先序序列输入,构造二叉链表
	char ch;
	cin>>ch;
	if(ch=='0')//读入0时,结点置空
		(*t)=NULL;
	else
	{
		(*t)=new bitnode;//生成结点空间
		(*t)->data=ch;
		createbitree(&(*t)->lchild); //左子树
        createbitree(&(*t)->rchild);//右子树
	}
}
//先序遍历
void preorder(bitree bt)
{
	if(bt==NULL)
		return ;
	cout<<(bt->data)<<'\t';
	preorder(bt->lchild);
	preorder(bt->rchild);
}
//中序遍历
void minorder(bitree bt)
{
	if(bt==NULL)
		return ;
	minorder(bt->lchild);
	cout<<(bt->data)<<'\t';
	minorder(bt->rchild);

}
//后序遍历
void postorder(bitree bt)
{
	if(bt==NULL)
		return;
	postorder(bt->lchild);
	postorder(bt->rchild);
	cout<<(bt->data)<<'\t';


}
//按层遍历
void levelorder(bitree bt)
{
	bitree queue[100];
	int front,rear;
	if(bt==NULL)
		return;
	front=-1;
	rear=0;
	queue[rear]=bt;
	while(front!=rear)
	{
		front++;
		cout<< (queue[front]->data)<<'\t';
		if(queue[front]->lchild!=NULL)
		{
			rear++;
			queue [rear]=queue[front]->lchild;


		}
		if(queue[front]->rchild!=NULL)
		{
			rear++;
			queue [rear]=queue[front]->rchild;
		}
	}
}

bitree exchange(bitree bt)//交换左右子树
{
	if(bt==NULL)
		return NULL;
    bitree mt,nt;
	nt=bt->lchild;
	mt=bt;
	bt->lchild=mt->rchild;
	bt->rchild=nt;
	exchange(bt->lchild);
	exchange(bt->rchild);
	return bt;
}
void main()
{
   bitree bt,et;
   char a;
   while (1)
   {
   cout<<"                        欢迎使用二叉树应用系统                    "<<endl;
   cout<<"                                         ————设计者:黄春亮   "<<endl;
    
	   cout<<"                        1.建立二叉树"<<endl;
	   cout<<"                        2.遍历二叉树"<<endl;
	   cout<<"                        3.交换左右子树"<<endl;
	   cout<<"                        4.退出二叉树操作"<<endl;

   
   cin>>a;
   
   switch(a)
   {
   case '1':cout<<"请输入节点元素(用0代替空)"<<endl;
	      createbitree(&bt);break;
   case'2':
	   { 
		   cout<<"          A.先序遍历"<<endl;
		   cout<<"          B.中序遍历"<<endl;
		   cout<<"          C.后序遍历"<<endl;
           cout<<"          D.层次遍历"<<endl;
		   char b;
	   cin>>b;
	   switch(b)
	   {
	   case 'A':
		   { cout<<"先序遍历:"<<endl;
		    preorder(bt);
			cout<<endl;
		   }
		   break;
		   
	   case 'B':
		   {
            cout<<"中序遍历:"<<endl;
            minorder(bt);
            cout<<endl;
		   }
		   break;
		   
	   case 'C':
		   {
            cout<<"后序遍历:"<<endl;  
            postorder(bt);
            cout<<endl;
		   } 
			break;
		
	   case 'D':
		   	{
		      cout<<"按层遍历:"<<endl;
		      levelorder(bt);
		      cout<<endl;
			}
			
	   }break;
	
   case '3':
	   {
            cout<<"交换左右子树:"<<endl;  
            et=exchange(bt);
            cout<<"交换完成!"<<endl;
	   }
	   break;
		

   case '4':cout<<"谢谢使用"<<endl;return;
   }
	
}
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -