完整代码:
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
#define OK 1
typedef char TElemType;
typedef struct BiNode {
TElemType data;
struct BiNode* lchild;
struct BiNode* rchild;
}BiNode,*BiTree;
int PreOrderTraverse(BiTree T) {
if (T == NULL)
return OK;
cout << T->data;
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
int InOrderTraverse(BiTree T) {
if (T == NULL)
return OK;
InOrderTraverse(T->lchild);
cout << T->data ;
InOrderTraverse(T->rchild);
}
int PostOrderTraverse(BiTree T) {
if (T == NULL)
return OK;
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
cout << T->data ;
}
void CreateBiTree(BiTree &T){
char ch;
cin >> ch;
if (ch == '#') {
T = NULL;
}
else{
T = (BiTree)malloc(sizeof(BiNode));
if (!T)
exit(OVERFLOW);
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
int main()
{
BiTree T=NULL;
cout << "请按照先序遍历的顺序输入:";
CreateBiTree(T);
cout << endl;
cout << "先序遍历的结果为:";
PreOrderTraverse(T);
cout << endl;
cout << "中序遍历的结果为:";
InOrderTraverse(T);
cout << endl;
cout << "后序遍历的结果为:";
PostOrderTraverse(T);
cout << endl;
system("pause");
return 0;
}
运行结果: