/*
* 静态创建链式二叉树 先中后遍历
* */
#include <stdio.h>
#include <stdlib.h>
typedef struct Btnode {
char data; //数据
struct Btnode* plchild; //左子树
struct Btnode* prchild; //右子树
} BTNODE;
BTNODE* create_btree();
void pre_traverse_btree(BTNODE* pt); //创建二叉树
void in_traverse_btree(BTNODE* pt); //先序遍历
void post_traverse_btree(BTNODE* pt); //后序遍历
int main()
{
BTNODE* pT = create_btree();
printf("先序遍历:\n");
pre_traverse_btree(pT); //先序遍历
printf("\n\n");
printf("中序遍历:\n");
in_traverse_btree(pT); //中序遍历
printf("\n\n");
printf("后序遍历:\n");
post_traverse_btree(pT); //后序遍历
printf("\n");
return 0;
}
/*创建二叉树*/
BTNODE* create_btree()
{
BTNODE* pa = (BTNODE*)malloc(sizeof(BTNODE));
BTNODE* pb = (BTNODE*)malloc(sizeof(BTNODE));
BTNODE* pc = (BTNODE*)malloc(sizeof(BTNODE));
BTNODE* pd = (BTNODE*)malloc(sizeof(BTNODE));
BTNODE* pe = (BTNODE*)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 pre_traverse_btree(BTNODE* pt)
{
if (pt) {
/*遍历根*/
printf(" -> ");
printf("%c", pt->data);
/*遍历左子树*/
if (pt->plchild)
pre_traverse_btree(pt->plchild);
/*遍历右子树*/
if (pt->prchild)
pre_traverse_btree(pt->prchild);
}
}
/*中序遍历*/
void in_traverse_btree(BTNODE* pt)
{
if (pt) {
/*遍历左子树*/
if (pt->plchild)
in_traverse_btree(pt->plchild);
/*遍历根*/
printf(" -> ");
printf("%c", pt->data);
/*遍历右子树*/
if (pt->prchild)
in_traverse_btree(pt->prchild);
}
}
/*后序遍历*/
void post_traverse_btree(BTNODE* pt)
{
if (pt) {
/*遍历左子树*/
if (pt->plchild)
post_traverse_btree(pt->plchild);
/*遍历右子树*/
if (pt->prchild)
post_traverse_btree(pt->prchild);
/*遍历根*/
printf(" -> ");
printf("%c", pt->data);
}
}
4.链式二叉树_静态_遍历
最新推荐文章于 2022-03-24 20:35:50 发布