#include<iostream>
using namespace std;
typedef struct node // 创建节点结构
{
char data;
struct node *lchild,*rchild;
}binary_tree,*tree;
void creat_tree(tree &t) // 创建二叉树
{
char ch;
cin >> ch;
if( ch == '0' ) // '0'表示没有子树
{
t = NULL;
}
else
{
t = (tree) new binary_tree;
if(!t)
exit(0); //如果没成功申请空间 则退出
t->data = ch;
creat_tree( t->lchild );
creat_tree( t->rchild );
}
}
//前序遍历
void pre_travel(tree &t) //前序遍历:根结点->左子树->右子树
{
if(t)
{
cout << t->data; //输出节点
pre_travel( t->lchild );
pre_travel( t->rchild );
}
}
//中续遍历
void mid_travel( tree &t ) //中序遍历:左子树->根结点->右子树
{
if(t)
{
pre_travel(t->lchild);
cout << t->data; //输出节点
pre_travel( t->rchild );
}
}
//后续遍历
void post_travel(tree &t) //中序遍历:左子树->右子树->根结点
{
if(t)
{
pre_travel( t->lchild );
pre_travel( t->rchild );
cout << t->data; //输出节点
}
}
int main()
{
tree t;
//"ab00c00"表示有三个节点,根节点a和它的左右孩子结点b,c,
cout << "请输入二叉树节点:(例如输入:AB00C00)";
creat_tree(t);
cout << "先续遍历:";
pre_travel(t);
cout << endl;
cout << "中续遍历:";
mid_travel(t);
cout << endl;
cout << "后续遍历:";
post_travel(t);
cout << endl;
system("pause");
return 0;
}
本程序创建的二叉树如下:
若想创建以下二叉树,则需输入:ABD00E00C00