二叉树遍历的递归实现
#include <stdio.h>
#include<stdlib.h>
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiNode,*BiTree;
BiTree CreateBiTree(){
BiTree T;
char c;
scanf("%c",&c);
if('#'==c){
T=NULL;
}
else{
T=(BiTree)malloc(sizeof(BiTNode));
T->data=c;
T->lchild=CreateBiTree();
T->rchild=CreateBiTree();
}
return T;
}
PreOrderTraverse(BiTree T)
{
if(T)
{
printf("%c\n",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
InOrderTraverse(BiTree T)
{
if(T)
{
PreOrderTraverse(T->lchild);
printf("%c\n",T->data);
PreOrderTraverse(T->rchild);
}
}
PostOrderTraverse(BiTree T)
{
if(T)
{
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
printf("%c\n",T->data);
}
}
int main()
{
BiTree T;
T=CreateBiTree();
printf("遍历二叉树前序:\n");
PreOrderTraverse(T);
printf("遍历二叉树中序:\n");
InOrderTraverse(T);
printf("遍历二叉树后序:\n");
PostOrderTraverse(T);
return 0;
}