#include "btree.h"
void PreOrder(BTNode *b) //先序遍歷的遞歸算法
{
if (b!=NULL)
{
printf("%c ",b->data); //訪問根節點
PreOrder(b->lchild); //遞歸訪問左子樹
PreOrder(b->rchild); //遞歸訪問右子樹
}
}
void InOrder(BTNode *b) //中序遍歷的遞歸算法
{
if (b!=NULL)
{
InOrder(b->lchild); //遞歸訪問左子樹
printf("%c ",b->data); //訪問根節點
InOrder(b->rchild); //遞歸訪問右子樹
}
}
void PostOrder(BTNode *b) //後序遍歷的遞歸算法
{
if (b!=NULL)
{
PostOrder(b->lchild); //遞歸訪問左子樹
PostOrder(b->rchild); //遞歸訪問右子樹
printf("%c ",b->data); //訪問根節點
}
}
int main()
{
BTNode *b;
CreateBTNode(b,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))");
printf("二叉樹b:");
DispBTNode(b);
printf("\n");
printf("先序遍歷序列:\n");
PreOrder(b);
printf("\n");
printf("中序遍歷序列:\n");
InOrder(b);
printf("\n");
printf("後序遍歷序列:\n");
PostOrder(b);
printf("\n");
DestroyBTNode(b);
return 0;
}
運行結果:
<img src="https://img-blog.csdn.net/20161110110758915?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />