使用递归法建立二叉树
1.代码
#include<stdio.h>
typedef struct BiTNode
{
char data;
struct BiTNode *rchild,*lchild;
} BiTNode,*BiTree;
int CreateBiTree(BiTNode *&T)
{
char x;
scanf("%c",&x);
if(x=='#')
T=NULL;
else
{
T=new BiTNode;
T->data=x;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return 0;
}
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()
{
BiTNode *T;
printf("以先序遍历的形式输入二叉树:");
CreateBiTree(T);
printf("前序遍历:");
PreOrder(T);
printf("\n中序遍历:");
InOrder(T);
printf("\n后序遍历:");
PostOrder(T);
delete T;
return 0;
}
1.1先序遍历
void PreOrder(BiTree T)
{
if(T)
{
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
1.2中序遍历
void InOrder(BiTree T)
{
if(T)
{
InOrder(T->lchild);
printf("%c",T->data);
InOrder(T->rchild);
}
}
1.3后序遍历
void PostOrder(BiTree T)
{
if(T)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c",T->data);
}
}
2.运行结果截图