#include <stdio.h>
#include <malloc.h>
typedef struct BTNode
{
int data;
struct BTNode * pLchild;
struct BTNode * pRchild;
}BTNODE,*PBTNODE;
PBTNODE CreateBTree(void);
void PreTraverseBTree(PBTNODE PT);
void InTraverseBTree(PBTNODE PT);
void PostTraverseBTree(PBTNODE PT);
int main(void)
{
PBTNODE pT=CreateBTree();
// PreTraverseBTree(pT);
// InTraverseBTree(pT);
PostTraverseBTree(pT);
return 0;
}
PBTNODE CreateBTree(void)
{
PBTNODE PA=(PBTNODE)malloc(sizeof(BTNODE));
PBTNODE PB=(PBTNODE)malloc(sizeof(BTNODE));
PBTNODE PC=(PBTNODE)malloc(sizeof(BTNODE));
PBTNODE PD=(PBTNODE)malloc(sizeof(BTNODE));
PBTNODE PE=(PBTNODE)malloc(sizeof(BTNODE));
PA->data='A';
PB->data='B';
PC->data='C';
PD->data='D';
PE->data='E';
PA->pLchild=PB;
PA->pRchild=PC;
PB->pLchild=PB->pRchild=NULL;
PC->pLchild=PD;
PC->pRchild=NULL;
PD->pLchild=NULL;
PD->pRchild=PE;
PE->pLchild=PE->pRchild=NULL;
return PA;
}
//先序遍历
void PreTraverseBTree(PBTNODE PT)
{
if(NULL != PT)
{
printf("%c\n",PT->data);
if(NULL != PT->pLchild)
{
PreTraverseBTree(PT->pLchild);
}
if(NULL != PT->pRchild)
{
PreTraverseBTree(PT->pRchild);
}
}
}
//中序遍历
void InTraverseBTree(PBTNODE PT)
{
if(NULL != PT)
{
if(NULL != PT->pLchild)
{
InTraverseBTree(PT->pLchild);
}
printf("%c\n",PT->data);
if(NULL != PT->pRchild)
{
InTraverseBTree(PT->pRchild);
}
}
}
//后序遍历
void PostTraverseBTree(PBTNODE PT)
{
if(NULL != PT)
{
if(NULL != PT->pLchild)
{
PostTraverseBTree(PT->pLchild);
}
if(NULL != PT->pRchild)
{
PostTraverseBTree(PT->pRchild);
}
printf("%c\n",PT->data);
}
}
《数据结构》——二叉树先中后三种遍历方式相关代码整理
最新推荐文章于 2022-05-26 18:28:22 发布