#include
#include
struct Node
{
char a ;
struct Node *lchil;
struct Node *rchil;
};
struct Node* Create()//递归建树
{
struct Node *p1;
int x;
p1=(struct Node*)malloc(sizeof(struct Node));
printf("请输入各个节点以先序遍历输入");
scanf("%d",&x);
if(x==0)
{
p1=NULL;
}
else
{
p1=(struct Node*)malloc(sizeof(struct Node));
p1->a=x;
p1->lchirl=Create();
p1->rchirl=Create();
}
return p1;
}
void Fist(struct Node * root)//前序遍历
{
if(root)
{
printf("%d",root->a);
Fist(root->lchirl);
Fist(root->rchirl);
}
}
void Mid(struct Node * root)//中序遍历
{
if(root)
{
Mid(root->lchirl);
printf("%d",root->a);
Mid(root->rchirl);
}
}
void Back(struct Node * root)//后续遍历
{
if(root)
{
Back(root->lchirl);
Back(root->rchirl);
printf("%d",root->a);
}
}
int main()
{
struct Node * root;
root=Create();
printf("树的前序遍历\n");
Fist(root);
printf("\n");
printf("树的中序遍历\n");
Mid(root);
printf("\n");
printf("树的后序遍历\n");
Back(root);
return 0;
}
输出结果