#include <stdio.h>
#include <stdlib.h>
typedef int Element ;
typedef struct BitTree{
Element data;
struct BitTree *lchild,*rchild;
}BitNode,*Bit;
//先序遍历创建二叉树
void creatorBitTree(Bit *T)
{
int ch;
scanf("%d",&ch);
if(ch==-1)
{
*T=NULL;
}
else{
*T=(Bit)malloc(sizeof(BitNode));
(*T)->data=ch;
creatorBitTree(&(*T)->lchild);
creatorBitTree(&(*T)->rchild);
}
}
//先序遍历二叉树
void PreOrderTraverse(Bit T)
{
if(T!=NULL)
{
printf("%d",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
//中序遍历二叉树
void InOrderTraverse(Bit T)
{
if(T!=NULL)
{
InOrderTraverse(T->lchild);
printf("%d",T->data);
InOrderTraverse(T->rchild);
}
}
//后序遍历二叉树
void PostOrderTraverse(Bit T)
{
if(T!=NULL)
{
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%d",T->data);
}
}
int main()
{
Bit node=NULL;
printf("请输入二叉树中的元素(以扩展先序遍历序列输入,其中0代表空子树):\n");
creatorBitTree(&node);
printf("先序遍历序列为:");
PreOrderTraverse(node);
printf("中序遍历序列为:");
InOrderTraverse(node);
printf("后序遍历序列为:");
PostOrderTraverse(node);
return 0;
}
分别输入:
1
2
4
-1
-1
5
-1
-1
3
6
-1
-1
7
-1
-1
就可以构造如下图所示的二叉树了。-1表示空
运行结果如图所示: