专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

二叉树的前、中、后序遍历

作者:余春雨老师   来源:本站原创   点击数:  更新时间:2014年04月26日   【字体:

  c程序如下:

# include <stdio.h>
# include <malloc.h>
 
struct BTNode
{
char data;
struct BTNode * pLchild;
struct BTNode * pRchild;
};
struct BTNode * creat_BTree(void);
void pro_traverse(struct BTNode * pT);
void mid_traverse(struct BTNode * pT);
void rear_traverse(struct BTNode * pT);
int main(void)
{
struct BTNode * pT = creat_BTree();
 
printf("二叉树前序遍历结果如下:\n");
pro_traverse(pT);
printf("\n");
 
printf("二叉树中序遍历结果如下:\n");
mid_traverse(pT);
printf("\n");
 
printf("二叉树后序遍历结果如下:\n");
rear_traverse(pT);
printf("\n");
 
return 0;
}
 
void pro_traverse(struct BTNode * pT)
{
if(pT != NULL)
{
printf("%c   ",pT->data);
 
if(NULL != pT->pLchild)
pro_traverse(pT->pLchild);
 
if(NULL != pT->pRchild)
pro_traverse(pT->pRchild);
}
 
}
 
void mid_traverse(struct BTNode * pT)
{
if(pT != NULL)
{
 
 
if(NULL != pT->pLchild)
mid_traverse(pT->pLchild);
 
printf("%c   ",pT->data);
 
if(NULL != pT->pRchild)
mid_traverse(pT->pRchild);
}
 
}
void rear_traverse(struct BTNode * pT)
{
if(pT != NULL)
{
 
if(NULL != pT->pLchild)
rear_traverse(pT->pLchild);
 
if(NULL != pT->pRchild)
rear_traverse(pT->pRchild);
 
printf("%c   ",pT->data);
}
 
}
 
struct BTNode * creat_BTree(void)
{
struct BTNode * pA = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode * pB = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode * pC = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode * pD = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode * pE = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode * pF = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode * pI = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode * pG = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode * pH = (struct BTNode *)malloc(sizeof(struct BTNode));
 
pA->data = 'A';
pB->data = 'B';
pC->data = 'C';
pD->data = 'D';
pE->data = 'E';
pF->data = 'F';
pG->data = 'G';
pH->data = 'H';
pI->data = 'I';
 
pA->pLchild = pB;
pA->pRchild = pE;
 
pB->pLchild = pC;
pB->pRchild = pD;
 
pC->pLchild = pC->pRchild = NULL;
 
pD->pLchild = pD->pRchild = NULL;
 
pE->pLchild = pF;
pE->pRchild = pI;
 
pF->pLchild = pF->pRchild = NULL;
 
pI->pLchild = pG;
pI->pRchild = pH;
 
pG->pLchild = pG->pRchild = NULL;
 
pH->pLchild = pH->pRchild = NULL;
 
return pA;
 
}

运行结果如下:

 二叉树前序遍历结果如下:
A   B   C   D   E   F   I   G   H
二叉树中序遍历结果如下:
C   B   D   A   F   E   G   I   H
二叉树后序遍历结果如下:
C   D   B   F   G   H   I   E   A
Press any key to continue
关闭窗口

相关文章