二叉树的建立

天涯浪子 提交于 2020-01-20 00:40:25

include <stdlib.h>

include

/(1)创建一颗二叉树
,用递归方法实现对其进行先序、
中序和后序遍历的操作
/
//创建二叉树结构体
typedef struct Node
{
char data;
struct Node LChild;
struct Node
RChild;
}BiTNode,BiTree;
using namespace std;
//结构体初始化
void init(BiTree
bt)
{
bt=(BiTree)malloc(sizeof(BiTNode));
(
bt)->LChild=NULL;
(*bt)->RChild=NULL;
}

//建立二叉树
void CreateBiTree(BiTree bt)
{
char ch;
cin>>ch;
if(ch=='#')
bt=NULL;
else
{
bt=(BiTree)malloc(sizeof(BiTNode));
(
bt)->data=ch;
CreateBiTree(&((bt)->LChild));
CreateBiTree(&((
bt)->RChild));
}
}

//先序遍历二叉树
void PreOrder(BiTree bt)
{
if(bt!=NULL)
{
printf("%c",bt->data);
PreOrder(bt->LChild);
PreOrder(bt->RChild);
}
}

//中序遍历二叉树
void inOrder(BiTree bt)
{
if(bt!=NULL)
{
inOrder(bt->LChild);
printf("%c",bt->data);
inOrder(bt->RChild);
}
}

//后序遍历二叉树
void PostOrder(BiTree bt)
{
if(bt!=NULL)
{
PostOrder(bt->LChild);
PostOrder(bt->RChild);
printf("%c",bt->data);

}

}
int main()
{
BiTree bt;
init(&bt);
int i;
while(1)
{
cout<<"输入1:创建二叉树"<<endl;
cout<<"输入2:先序遍历二叉树"<<endl;
cout<<"输入3:中序遍历二叉树"<<endl;
cout<<"输入4:后序遍历二叉树"<<endl;
cout<<"输入0:退出"<<endl;
cout<<"请输入要执行的操作"<<endl;
cin>>i;
switch(i)
{
case 1:
cout<<"请输入数据"<<endl;
CreateBiTree(&bt);
break;

        case 2:
          PreOrder(bt);
          cout<<endl;
           break;

        case 3:

            inOrder(bt);
            cout<<endl;
           break;
        case 4:

            PostOrder(bt);
            cout<<endl;
           break;

        case 0:
            break;
    }
    if(i==0)
        break;
}

}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!