#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef char DataType;
typedef struct BiNode
{
DataType data;
struct BiNode *lchild, *rchild;
} BiNode;
BiNode * CreatBiTree(BiNode *root)
{
char ch;
scanf("%c",&ch);
if (ch == '#')
{
root = NULL;
}
else
{
root = (BiNode *)malloc(sizeof(BiNode));
root->data = ch;
root->lchild = CreatBiTree(root->lchild);
root->rchild = CreatBiTree(root->rchild);
}
return root;
}
void PreOrder(BiNode *root)
{
if (root == NULL) return;
else
{
printf("%c ", root->data);
PreOrder(root->lchild);
PreOrder(root->rchild);
}
}
void InOrder(BiNode *root)
{
if (root == NULL) return;
else
{
InOrder(root->lchild);
printf("%c ", root->data);
InOrder(root->rchild);
}
}
void PostOrder(BiNode *root)
{
if (root == NULL) return;
else
{
PostOrder(root->lchild);
PostOrder(root->rchild);
printf("%c ", root->data);
}
}
int main()
{
BiNode *root = NULL;
root = CreatBiTree(root);
printf("该二叉树的根结点是:%c\n", root->data);
printf("\n该二叉树的前序遍历序列是:");
PreOrder(root);
printf("\n该二叉树的中序遍历序列是:");
InOrder(root);
printf("\n该二叉树的后序遍历序列是:");
PostOrder(root);
return 0;
}
运行结果:
ABDE####CF##GH###
该二叉树的根结点是:A
该二叉树的前序遍历序列是:A B D E C F G H
该二叉树的中序遍历序列是:E D B A F C H G
该二叉树的后序遍历序列是:E D B F H G C A