数据结构--二叉树
include <stdio.h>
include <malloc.h>
typedef struct BTNode
{
char RootNode;//存放节点
struct BTNode * pLTree;//左子树
struct BTNode * pRTree;//右子树
}BTNODE, * PBTNODE;
PBTNODE CreateBTree(void);//创建树
void Preordertrcaversal(PBTNODE);//先序排序
void Inordertraversal(PBTNODE);//中序排序
void Postordertraversal(PBTNODE);//后序排序
int main(void)
{
PBTNODE pT = CreateBTree();
printf("先序排序:\n");
Preordertrcaversal(pT);
printf("中序排序:\n");
Inordertraversal(pT);
printf("后序排序:\n");
Postordertraversal(pT);
return 0;
}
//后序排序
void Postordertraversal(PBTNODE pT)
{
if(NULL != pT)
{
if(NULL != pT->pLTree)
{
Postordertraversal(pT->pLTree);
}
if(NULL != pT->pRTree)
{
Postordertraversal(pT->pRTree);
}
printf("%c\n", pT->RootNode);
}
}
//中序排序
void Inordertraversal(PBTNODE pT)
{
if(NULL != pT)
{
if(NULL != pT->pLTree)
{
Inordertraversal(pT->pLTree);
}
printf("%c\n", pT->RootNode );
if(NULL != pT->pRTree)
{
Inordertraversal(pT->pRTree);
}
}
}
//先序排序
void Preordertrcaversal(PBTNODE pT)
{
if(NULL != pT)
{
printf("%c\n", pT->RootNode);
if(NULL != pT->pLTree)
{
Preordertrcaversal(pT->pLTree);
}
if(NULL != pT->pRTree)
{
Preordertrcaversal(pT->pRTree);
}
}
}
//创建树
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));
PBTNODE pF = (PBTNODE)malloc(sizeof(BTNODE));
//节点赋值,关联节点
pA->RootNode = 'A';
pA->pLTree = pB;
pA->pRTree = pC;
pB->RootNode = 'B';
pB->pLTree = pD;
pB->pRTree = pE;
pC->RootNode = 'C';
pC->pLTree = NULL;
pC->pRTree = pF;
pD->RootNode = 'D';
pD->pLTree = pD->pRTree = NULL;
pE->RootNode = 'E';
pE->pLTree = pE->pRTree = NULL;
pF->RootNode = 'F';
pF->pLTree = pF->pRTree = NULL;
return pA;//返回根节点地址
}
浙公网安备 33010602011771号