c语言ABCDEF前中后序遍历,c语言实现二叉树及前中后序遍历

c语言实现二叉树及前中后序遍历(采用递归遍历方式)

0818b9ca8b590ca3270a3433284dd417.png

#include

#include

#include

//定义二叉树节点

typedef struct BTNode{

char data;

struct BTNode *rchild,*lchild;

}BTNode,*BTtree;

BTtree createBTNode(BTtree ptr, char value, char child){

//创建子节点

BTtree ptemp = (BTtree)malloc(sizeof(BTNode));

if(NULL == ptemp){

puts("创建子节点失败!");

exit(1);

}

ptemp->data = value;

ptemp->rchild = NULL;

ptemp->lchild = NULL;

if(child == 'R'){

ptr->rchild = ptemp;

}else if(child == 'L'){

ptr->lchild = ptemp;

}

return ptemp;

}

BTtree initBTree(){

//首先创建根节点

BTtree root = (BTtree)malloc(sizeof(BTNode));

if(root == NULL){

puts("根节点创建失败");

exit(1);

}

root->data = 'A';

root->rchild = NULL;

root->lchild = NULL;

BTtree pb = createBTNode(root,'B','L');

BTtree pc = createBTNode(root,'C','R');

BTtree pd = createBTNode(pb,'D','L');

BTtree pe = createBTNode(pb,'E','R');

BTtree pf = createBTNode(pc,'F','L');

BTtree pg = createBTNode(pc,'G','R');

return root;

}

//对二叉树进行先序遍历

void preorder(BTtree p){

if(p != NULL){

printf("%c ",p->data);

preorder(p->lchild); //先序遍历左子树

preorder(p->rchild);//先序遍历右子树

}

}

void inorder(BTtree p){

if(p != NULL){

inorder(p->lchild);

printf("%c ",p->data);

inorder(p->rchild);

}

}

void postorder(BTtree p){

if(p != NULL){

postorder(p->lchild);

postorder(p->rchild);

printf("%c ",p->data);

}

}

int main(){

BTtree btroot = initBTree();

//printf("%c\n",btroot->data);

printf("先序遍历:\n");

preorder(btroot);

printf("\n中序遍历:\n");

inorder(btroot);

printf("\n后序遍历:\n");

postorder(btroot);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值