数据结构之完全的前序中序后序遍历(使用递归)

从头再来----数据结构之层次建树的前中后序遍历(使用递归)

前序遍历(也叫先序遍历 是深度优先遍历)

先访问树的根结点
再访问树的左结点
(如果该左结点仍存在其左结点 则应该再次访问其左结点 将该左结点 视为根结点)
在访问树的右结点
(如果该右结点仍存在左结点则也应再次访问其左结点)
始终保持 根左右 进行遍历

//前序遍历
void preOrder(BiTree tree) {
	//遍历 根左右
	//使用递归
	if (tree != NULL) {
		printf("%c", tree->c);
		preOrder(tree->LChild);
		preOrder(tree->RChild);
	}
}

中序遍历

先访问左结点
在访问根节点
最后访问右结点

//中序遍历
void inOrder(BiTree tree) {
	//使用递归 左根右
	if (tree != NULL) {
		inOrder(tree->LChild);//先打印左子树
		putchar(tree->c);//在打印根节点
		inOrder(tree->RChild);//在打印右子树
	}
}

后序遍历

先访问左结点, 在访问右结点
最后访问根结点

//后序遍历
void postOrder(BiTree tree) {
	//使用递归 左右根
	if (tree != NULL) {
		postOrder(tree->LChild);//先打印左子树
		postOrder(tree->RChild);//在打印右子树
		putchar(tree->c);//打印根节点
	}
}

主函数中调用方法

	printf("\n---------------前序遍历------根左右---------abdhiejcfg\n");
	preOrder(tree);//将层次建树 进行前序遍历
	printf("\n---------------中序遍历------左根右---------hdibjeafcg\n");
	inOrder(tree);//将层次建树 进行中序遍历
	printf("\n---------------后序遍历------左右根---------hidjebfgca\n");
	postOrder(tree);//将层次建树 进行后序遍历

实现结果

在这里插入图片描述

辅助学习


层次建树的代码即方式,点击这里

关于前序中序后序遍历 注意其根在什么位置 即为什么遍历
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值