前序、中序、后序遍历二叉树

/*(1) 建立一棵含有n个结点的二叉树,采用二叉链表存储
建立结点的结构体类型;

按照先序遍历法将二叉树的序列给出;

动态申请内存空间存储新结点;

建立结点间的关系;
(2) 前序(或中序、后序)遍历该二叉树*/
#include<stdio.h>
#include<malloc.h>

// char DataType;
typedef struct Node
{
char data;
struct Node *Lchild;
struct Node *Rchild;
}BiTNode,*BiTree;

BiTree Creat()
{
BiTNode *root;
// char data;
char ch;
printf("请输入:");
scanf("%c",&ch);
getchar();
if(ch=='!')
root=NULL;
else
{
root=(BiTNode *)malloc(sizeof(BiTNode));
root->data=ch;
root->Lchild=Creat();
root->Rchild=Creat();

}
return root;
}
void PreOrder(BiTree root)
{
if(root!=NULL)
{
printf("%c",root->data);
PreOrder(root->Lchild);
PreOrder(root->Rchild);
}
}
void InOrder(BiTree root)
{
if(root!=NULL)
{
InOrder(root->Lchild);
printf("%c",root->data);
InOrder(root->Rchild);
}
}
void PostOrder(BiTree root)
{
if(root!=NULL)
{
PostOrder(root->Lchild);
PostOrder(root->Rchild);
printf("%c",root->data);
}
}

void main()
{
BiTNode *root=NULL;
root=Creat();
printf("该树的前中后序遍历依次为: ");
PreOrder(root);
printf(" ");
InOrder(root);
printf(" ");
PostOrder(root);
printf(" ");
}

如图所示:

             

原文地址:https://www.cnblogs.com/yjm5/p/6131055.html