递归遍历
#include <stdio.h>
#include <stdlib.h>
#include<stdbool.h>
typedef int Elemtype;
typedef struct BiTNode
{
Elemtype data;
struct BitTNode *lchild,*rchild;
} BiTNode,*BiTree;
BiTree CreateLink()
{
int data;
BiTree T;
scanf("%d",&data);
if(data==-1)
{
return NULL;
}
else
{
T=(BiTree)malloc(sizeof(BiTNode));
T->data=data;
printf("请输入%d的左子树: ",data);
T->lchild=CreateLink();
printf("请输入%d的右子树: ",data);
T->rchild=CreateLink();
return T;
}
}
void visit(BiTree T)
{
printf("%d ",T->data);
}
void PreOrder(BiTree T)
{
if(T!=NULL)
{
visit(T);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BiTree T)
{
if(T!=NULL)
{
InOrder(T->lchild);
visit(T);
InOrder(T->rchild);
}
}
void PostOrder(BiTree T)
{
if(T!=NULL)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
visit(T);
}
}
int main()
{
BiTree T;
printf("请输入根节点数据: ");
T=CreateLink();
PreOrder(T);
printf(