#include<iostream>
using namespace std;
//输入示例ab##c##
//定义节点
typedef struct node
{
struct node *lchild;
struct node *rchild;
char data;
}BiTreeNode, *BiTree;
//按照前序顺序建立二叉树
void createBiTree(BiTree &T)
{
char c;
cin >> c;
if('#' == c) //当遇到#时,令树的根节点为NULL,从而结束该分支的递归
T = NULL;
else
{
T = new BiTreeNode;
T->data=c;
createBiTree(T->lchild);
createBiTree(T->rchild);
}
}
//前序遍历二叉树并打印
void preTraverse(BiTree T)
{
if(T)
{
cout<<T->data<<" ";
preTraverse(T->lchild);
preTraverse(T->rchild);
}
}
//中序遍历二叉树并打印
void midTraverse(BiTree T)
{
if(T)
{
preTraverse(T->lchild);
cout<<T->data<<" ";
preTraverse(T->rchild);
}
}
//后序遍历二叉树并打印
void postTraverse(BiTree T)
{
if(T)
{
preTraverse(T->lchild);
preTraverse(T->rchild);
cout<<T->data<<" ";
}
}
int main()
{
BiTree T; //声明一个指向二叉树根节点的指针
createBiTree(T);
cout<<"二叉树创建完成!"<<endl;
int n;
while(~scanf("%d",&n))
{
if(n==1)
{
cout<<"前序遍历二叉树:"<<endl;
preTraverse(T);
cout<<endl;
}
if(n==2)
{
cout<<"中序遍历二叉树:"<<endl;
midTraverse(T);
cout<<endl;
}
if(n==3)
{
cout<<"后序遍历二叉树:"<<endl;
postTraverse(T);
cout<<endl;
}
}
return 0;
}
二叉树的基础
猜你喜欢
转载自blog.csdn.net/Davidmvp/article/details/83475833
今日推荐
周排行