二叉树的先序、中序、后序遍历
#include<stdio.h>
#include<malloc.h>
typedef struct node{
char data;
struct node *lchild,*rchild;
}BiTreeNode,*BiTree;
void CreateBiTree(BiTree &T){
char c;
scanf("%c",&c);
if(c=='#')
{
T=NULL;
}
else{
T=(BiTree)malloc(sizeof(BiTreeNode));
T->data=c;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void PreOrder(BiTree T){
if(T){
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder (BiTree T){
if(T){
InOrder(T->lchild);
printf("%c",T->data);
InOrder(T->rchild);
}
}
void PostOrder(BiTree T) {
if(T){
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c",T->data);
}
}
int main(){
BiTree T;
CreateBiTree(T);
printf("先序二叉树:");
PreOrder(T);
printf("\n");
printf("中序二叉树:");
InOrder(T);
printf("\n");
printf("后序二叉树:");
PostOrder(T);
return 0;
}