#include <stdio.h>
#include <stdlib.h>
#define true 1
#define false 0
typedef int bool;
typedef struct BiNode
{
char data;
struct BiNode * pLchild;
struct BiNode * pRchild;
}BiNode,*PBiNode;
PBiNode create_BinaryTree();
void preTraverse(PBiNode);
void inTraverse(PBiNode);
void postTraverse(PBiNode);
//后序遍历二叉树
void postTraverse(PBiNode p)
{
if(NULL != p->pLchild)
postTraverse(p->pLchild);
if(NULL != p->pRchild)
postTraverse(p->pRchild);
if(NULL != p)
printf("%c ",p->data);
}
//中序遍历二叉树
void inTraverse(PBiNode p)
{
if(NULL != p->pLchild)
inTraverse(p->pLchild);
if(NULL != p)
printf("%c ",p->data);
if(NULL != p->pRchild)
inTraverse(p->pRchild);
}
//前序遍历二叉树
void preTraverse(PBiNode p)
{
if(NULL != p)
printf("%c ",p->data);
if(NULL != p->pLchild)
preTraverse(p->pLchild);
if(NULL != p->pRchild)
preTraverse(p->pRchild);
}
//创建一棵二叉树
PBiNode create_BinaryTree()
{
PBiNode pA = (PBiNode)malloc(sizeof(BiNode));
PBiNode pB = (PBiNode)malloc(sizeof(BiNode));
PBiNode pC = (PBiNode)malloc(sizeof(BiNode));
PBiNode pD = (PBiNode)malloc(sizeof(BiNode));
PBiNode pE = (PBiNode)malloc(sizeof(BiNode));
PBiNode pF = (PBiNode)malloc(sizeof(BiNode));
PBiNode pG = (PBiNode)malloc(sizeof(BiNode));
pA->data = 'A';
pB->data = 'B';
pC->data = 'C';
pD->data = 'D';
pE->data = 'E';
pF->data = 'F';
pG->data = 'G';
pA->pLchild = pB;
pA->pRchild = pC;
pB->pLchild = pD;
pB->pRchild = NULL;
pC->pLchild = pE;
pC->pRchild = pF;
pD->pLchild = NULL;
pD->pRchild = NULL;
pE->pLchild = NULL;
pE->pRchild = NULL;
pF->pLchild = pG;
pF->pRchild = NULL;
pG->pLchild = NULL;
pG->pRchild = NULL;
return pA;
}
int main()
{
PBiNode root = create_BinaryTree();
printf("-----------前序遍历结果-----------\n");
preTraverse(root);
printf("\n");
printf("-----------中序遍历结果-----------\n");
inTraverse(root);
printf("\n");
printf("-----------后序遍历结果-----------\n");
postTraverse(root);
printf("\n");
return 0;
}
数据结构之——创建一棵二叉树并完成遍历
最新推荐文章于 2024-10-21 18:52:09 发布
本文展示了如何创建一棵二叉树,并通过C语言实现了前序、中序和后序遍历的方法。代码中定义了二叉树节点结构,创建了一棵包含7个节点的二叉树,并分别进行前序、中序和后序遍历,输出遍历结果。

2万+

被折叠的 条评论
为什么被折叠?



