二叉树前序遍历,中序遍历,后序遍历的现。
#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode
{
char data;
BiTNode *lchild,*rchild;
}BiTNode;
void visit(BiTNode *T)
{
printf("%c",T->data);
}
void CreateBiTree(BiTNode *&T)
{
char ch;
ch=getchar();
getchar();
if(ch=='#')
T=NULL;
else
{
T=(BiTNode*)malloc(sizeof(BiTNode));
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void Preorder(BiTNode *T)
{
if(T!=NULL)
{
visit(T);
Preorder(T->lchild);
Preorder(T->rchild);
}
}
void Inorder(BiTNode *T)
{
if(T!=NULL)
{
Inorder(T->lchild);
visit(T);
Inorder(T->rchild);
}
}
void Postorder(BiTNode *T)
{
if(T!=NULL)
{
Postorder(T->lchild);
Postorder(T->rchild);
visit(T);
}
}
int main()
{
BiTNode *T;
CreateBiTree(T);
printf("先序遍历:");
Preorder(T);
printf("\n中序遍历:");
Inorder(T);
printf("\n后序遍历:");
Postorder(T);
return 0;
}