1.完整代码
#include<iostream>
#include<malloc.h>
using namespace std;
#define TElemType int
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
int CreateBiTree(BiTree &T)
{
TElemType a;
scanf("%d", &a);
if ( 0 == a )
{
T = NULL;
}
else
{
T = (BiTree)malloc(sizeof(BiTNode));
if ( !T )
exit(OVERFLOW);
T->data = a;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
}
void PreOrderTraverse(BiTree T)
{
if ( T != NULL )
{
printf("%d ", T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
void InOrderTraverse(BiTree T)
{
if ( T != NULL )
{
InOrderTraverse(T->lchild);
printf("%d ", T->data);
InOrderTraverse(T->rchild);
}
}
void PostOrderTraverse(BiTree T)
{
if ( T != NULL )
{
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%d ", T->data);
}
}
int main()
{
BiTree T = NULL;
cout << "请按照先序遍历输入二叉树('0'无): ";
CreateBiTree(T);
cout << "先序遍历: ";
PreOrderTraverse(T);
printf("\n");
cout << "中序遍历: ";
InOrderTraverse(T);
printf("\n");
cout << "后序遍历: ";
PostOrderTraverse(T);
printf("\n");
return 0;
}
2.测试结果
