数据结构--二叉树

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;//返回根节点地址

}

posted @ 2020-09-29 21:02  星空0125  阅读(113)  评论(0)    收藏  举报