问题描述:输入一棵二叉树,使用二叉链表结构存储二叉树,并用递归方法输出先序、中序、后序三种遍历结果。
#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct BiTNode {
char data;
BiTNode *lchild, *rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T)
{//以先序输入数据
char ch;
ch=getchar();
if(ch==' ') T=NULL;
else {
if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit(0);
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void PreOrderTraverse(BiTree &T)
{//先序遍历
if(T==NULL) return;
if(T->data!=' ') cout<<T->data;
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
void InOrderTraverse(BiTree &T)
{//中序遍历
if(T==NULL) return;
InOrderTraverse(T->lchild);
if(T->data!=' ') cout<<T->data;
InOrderTraverse(T->rchild);
}
void PostOrderTraverse(BiTree &T)
{//后序遍历
if(T==NULL) return;
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
if(T->data!=' ') cout<<T->data;
}
int main()
{
BiTree T;
cout<<"Enter the numbers(Preorder):"<<endl;
CreateBiTree(T);
cout<<"The Preorder is:"<<endl;
PreOrderTraverse(T);
cout<<endl;
cout<<"The Inorder is:"<<endl;
InOrderTraverse(T);
cout<<endl;
cout<<"The Posteorder is:"<<endl;
PostOrderTraverse(T);
cout<<endl;
return 0;
}