c/c++先序法创建二叉树_先序中序后序输出
转专业数据结构在学生,老师讲树时的小作业,因为在CSDN看帖子得到了很多帮助,所以也顺手发第一篇帖子
/*≈自习数据结构ing,如有问题,欢迎指正~*/
#include <iostream>
using namespace std;
struct node
{
node* right;//右孩子节点
char data;
node* left;//左孩子节点
};
node* creatBT(node* RT)//先序序列递归构建
{
char ch;
cin>>ch;
if (ch=='#')//#表示空子树
{
RT=NULL;
}
else
{
RT=new node;
RT->data=ch;
RT->left=NULL;
RT->right=NULL;
RT->left=creatBT(RT->left);
RT->right=creatBT(RT->right);
}
return RT;//返回根节点
}
void preOrder(node* RT)//先序序列打印
{
if (RT!=NULL)
{
cout<<RT->data;
preOrder(RT->left);
preOrder(RT->right);
}
}
void inOrder(node* RT)//中序序列打印
{
if (RT!=NULL)
{
preOrder(RT->left);
cout<<RT->data;
preOrder(RT->right);
}
}
void postOrder(node* RT)//后序序列打印
{
if (RT!=NULL)
{
preOrder(RT->left);
preOrder(RT->right);
cout<<RT->data;
}
}
int main()
{
node* T=NULL;
cout<<"请输入先序序列(其中#代指空子树):";
T=creatBT(T);//先序序列种树
cout<<"\n先序序列输出:";
preOrder(T);//先序序列打印
cout<<"\n中序序列输出:";
inOrder(T);
cout<<"\n后序序列输出:";
postOrder(T);
return 0;
}