#include<iostream>
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int Status;
typedef char ElemType;
using namespace std;
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//前序遍历建立二叉树
Status CreateBiTree(BiTree &T){
ElemType ch;
cin>>ch;
if(ch=='#'){//#代表空结点
T=NULL;
}else{
T=new BiTNode;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
//前序遍历
void PreOrderTraverse(BiTree &T)
{
if(T)
{
cout<<T->data;
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
//中序遍历
void InOrderTraverse(BiTree &T)
{
if(T)
{
InOrderTraverse(T->lchild);
cout<<T->data;
InOrderTraverse(T->rchild);
}
}
//后序遍历
void PostOrderTraverse(BiTree &T)
{
if(T)
{
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
cout<<T->data;
}
}
int main(){
BiTree T;
cout<<"请输入以前序遍历的方式输入书中各个元素:"<<endl;
CreateBiTree(T);
cout<<endl;
cout<<"前序遍历的结果为:";
PreOrderTraverse(T);
cout<<endl;
cout<<"中序遍历的结果为:";
InOrderTraverse(T);
cout<<endl;
cout<<"后序遍历的结果为:";
PostOrderTraverse(T);
cout<<endl;
return 0;
}
C++递归算法实现二叉树的前、中、后序遍历
最新推荐文章于 2023-03-02 16:41:40 发布