二叉树的数据结构
typedef struct BiTNode
{
char data;
struct BiTNode *Lchild,*rchild;
}BiTNode,*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;
}
之后先序遍历二叉树
void PreOrderTraver(BiTree &T)
{
if(T)
{
visit(T->data);
PreOrderTraver(T->Lchild);
PreOrderTraver(T->rchild);
}
}
中序遍历二叉树
void BetOrderTraver(BiTree &T)
{
if(T)
{
BetOrderTraver(T->Lchild);
visit(T->data);
BetOrderTraver(T->rchild);
}
}
后序遍历二叉树
void PostOrderTraver(BiTree &T)
{
if(T)
{
PostOrderTraver(T->Lchild);
PostOrderTraver(T->rchild);
visit(T->data);
}
}
不管是先序建立二叉树还是先序、中序、后序遍历二叉树都采用了递归的思想。