#include <iostream>
#include <stdio.h>
#include <malloc.h>
using namespace std;
typedef struct TreeNode
{
char data;
struct TreeNode *left,*right;
}*pNode,Node;
void CreateTree(pNode &T); ///此处应该用指针的引用
void PreOrderTraverse(pNode &T);
void InOrderTraverse(pNode &T);
void PostOrderTraverse(pNode &T);
int main()
{
pNode T=NULL;
printf("输入A~Z建立二叉树,#代表空\n");
CreateTree(T);
printf("先序遍历结果为:");
PreOrderTraverse(T);
printf("\n");
printf("中序遍历结果为:");
InOrderTraverse(T);
printf("\n");
printf("后序遍历结果为:");
PostOrderTraverse(T);
printf("\n");
}
void CreateTree(pNode &T)
{
char ch;
if((ch=getchar())=='#') T=NULL;
else{
T=(pNode)malloc(sizeof(Node));
T->data=ch;
CreateTree(T->left);
CreateTree(T->right);
}
}
void PreOrderTraverse(pNode &T)
{
if(T){
printf("%c",(T)->data);
PreOrderTraverse(T->left);
PreOrderTraverse(T->right);
}
}
void InOrderTraverse(pNode &T)
{
if(T){
InOrderTraverse(T->left);
printf("%c",T->data);
InOrderTraverse(T->right);
}
}
void PostOrderTraverse(pNode &T)
{
if(T){
PostOrderTraverse(T->left);
PostOrderTraverse(T->right);
printf("%c",T->data);
}
}