<span style="font-size:18px;">#include<stdio.h>
#include<malloc.h>
typedef struct BiTNode
{
char data;//结点的数据域
struct BiTNode *lchild,*rchild;//对应结点的左右孩子
}BiTNode,*BiTree;
//用户按照先序顺序输入
void CreateBiTree(BiTree &T)
{
char ch;
scanf("%c",&ch);
if(ch=='#')//#代表该结点为空
T=NULL;
else
{
T=new BiTNode;//生成新的结点,并返回地址
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
//先序遍历二叉树
void PreOrderTraverse(BiTree T,int lever)//lever代表该节点的层数
{
if(T)
{
printf("%c",T->data);
//printf("%c 该节点的层数:%d\n",T->data,lever);
PreOrderTraverse(T->lchild,lever+1);
PreOrderTraverse(T->rchild,lever+1);
}
}
//中序遍历二叉树
void InOrderTraverse(BiTree T,int lever)//lever代表该节点的层数
{
if(T)
{
InOrderTraverse(T->lchild,lever+1);
printf("%c",T->data);
//printf("%c 该节点的层数:%d\n",T->data,lever);
InOrderTraverse(T->rchild,lever+1);
}
}
//后序遍历二叉树
void HouOrderTraverse(BiTree T,int lever)//lever代表该节点的层数
{
if(T)
{
HouOrderTraverse(T->lchild,lever+1);
HouOrderTraverse(T->rchild,lever+1);
printf("%c",T->data);
//printf("%c 该节点的层数:%d\n",T->data,lever);
}
}
int main()
{
BiTree T;
T=NULL;
int lever=1;
CreateBiTree(T);
InOrderTraverse(T,lever);
printf("\n");
return 0;
}</span>