递归:
#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void PreOrderTraverse(BiTree T)//二叉树的先序遍历
{
if(T==NULL)return ;
printf("%c ",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
void MidOrderTraverse(BiTree T)//二叉树的中序遍历
{
if(T==NULL)return ;
MidOrderTraverse(T->lchild);
printf("%c ",T->data);
MidOrderTraverse(T->rchild);
}
void ReaOrderTraverse(BiTree T)//后序遍历
{
if(T==NULL)return;
ReaOrderTraverse(T->lchild);
ReaOrderTraverse(T->rchild);
printf("%c ",T->data);
}
void CreateBiTree(BiTree *T)
{
char ch;
scanf("%c",&ch);
if(ch=='#')
{
*T=NULL;
return;
}
else
{
*T=(BiTree )malloc(sizeof(BiTNode));
(*T)->data=ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
int main()
{
BiTree T;
CreateBiTree(&T);
printf("Pre:");
PreOrderTraverse (T);
printf("\nMid:");
MidOrderTraverse(T);
printf("\nRea:");
ReaOrderTraverse(T);
return 0;
}
//ABD###CE##FG###