树结构的建立以及递归遍历(C语言)

本文详细介绍了如何使用递归方法按照先序顺序创建二叉树,并提供了先序、中序和后序遍历的实现代码。通过具体的C语言代码示例,深入解析了二叉树的数据结构和操作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按照先序顺序创造一个二叉树:
递归方式,若输入的值为空格,则相应的结点为空;若输入的值不为空格,
则T->data为相应的值,然后继续递归左子树。
Status CreateBitree(BiTree &T){
//按照先序顺序建造一个二叉树
char ch;
scanf("%c",&ch);
if(ch==’ ')
T=NULL;
else{
if(!(T=(BiTree)malloc(sizeof(BiTNode)))) exit(FULL);
else{
T->data = ch;
CreateBitree(T->lchild );//建立左子树
CreateBitree(T->rchild );//建立右子树
}
return OK;
}
}

先序遍历:
Status PreOrderTraverse(BiTree &T,Status(*Visit)(char e)){
//先序遍历,递归
if(T){
if(Visit(T->data))
if(PreOrderTraverse(T->lchild,Visit))
if(PreOrderTraverse(T->rchild,Visit)) return OK;
return ERROR;
}
else return OK;
}

中序遍历:
Status InOrderTraverse(BiTree &T,Status(*Visit)(char e)){
//中序遍历,递归
if(T){
if(InOrderTraverse(T->lchild,Visit))
if(Visit(T->data))
if(InOrderTraverse(T->rchild,Visit) )return OK;
return ERROR;
}
else return OK;
}

后序遍历:
Status PostOrderTraverse(BiTree &T,Status(*Visit)(char e)){
//后序遍历,递归
if(T){
if(PostOrderTraverse(T->lchild ,Visit))
if(PostOrderTraverse(T->rchild ,Visit))
if(Visit(T->data )) return OK;
}
else return ERROR;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值