📄 二叉树应用--我.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 + -