递归函数(C语言)

本文介绍了如何使用C语言实现二叉树的递归遍历,包括后序遍历的代码示例,并指出通过改变顺序可以实现先序和中序遍历。在递归函数中,正确设置判定条件是避免无限循环的关键。

递归函数:自己调用自己的函数式递归函数。定义递归函数时,为了避免不断的重复循环不停止,应当引入判定条件。

以一个二叉树遍历例子来讲解:

二叉树的图为:

 二叉树遍历的代码为:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct BiNode
{
	char ch;
	struct BiNode *lchild;
	struct BiNode *rchild;
};


//二叉树递归遍历
void recursion(struct BiNode *root)
{
	if (NULL==root)
	{
		return;
	}
	//后序遍历
	//递归遍历左子树
	recursion(root->lchild);

	//递归遍历右子树
	recursion(root->rchild);

	printf("%c", root->ch);

}

void test()
{
	struct BiNode nodeA = { 'A', NULL, NULL };
	struct BiNode nodeB = { 'B', NULL, NULL };
	struct BiNode nodeC = { 'C', NULL, NULL };
	struct BiNode nodeD = { 'D', NULL, NULL };
	struct BiNode nodeE = { 'E', NULL, NULL };
	struct BiNode nodeF = { 'F', NULL, NULL };
	struct BiNode nodeG = { 'G', NULL, NULL };
	struct BiNode nodeH = { 'H', NULL, NULL };


	nodeA.lchild = &nodeB;
	nodeA.rchild = &nodeF;

	nodeB.rchild = &nodeC;

	nodeC.lchild = &nodeD;
	nodeC.rchild = &nodeE;

	nodeF.rchild = &nodeG;

	nodeG.lchild = &nodeH;


	recursion(&nodeA);

}



int main()
{
	test();
	system("pause");
	return 0;
}

递归(后序)遍历的代码:

 补充:先序遍历可将代码行2、3、4改为4、2、3,中序遍历可将代码行改为2、4、3。

 代码运行的结果为:

 代码运行的结果为:DECBHGFA

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值