数据结构二叉树遍历之中序遍历

本文详细介绍了二叉树的中序遍历,包括递归实现和非递归实现。递归实现遵循先左后右再根的顺序,非递归实现则需要维护一个栈辅助完成。通过示例展示了中序遍历的完整过程,并提供了经过测试的代码实现。
摘要由CSDN通过智能技术生成

中序遍历的递归实现
中序遍历指的是先访问二叉树中节点的左孩子,再访问当前节点,最后再访问其右孩子,具体访问步骤如下:

1、首先访问根节点,判断根节点是否有左孩子,如果有,进行第二步;如果没有,跳到第三步;
2、访问左孩子,继续判断当前节点是否有左孩子,如果有则继续访问其左孩子,直到某节点的左孩子为空
3、判断是否有右孩子,如果有,则继续判断当前节点是否有左孩子,一直到某节点没有左孩子为止
4、把第二步访问的节点做为当前节点(该节点无左孩子,如图中的15节点),按照规则,下一步应该访问其右孩子
5、返回到第四部节点的双亲节点(15的双亲节点是5),并设为当前访问的节点,下一步访问的是其右孩子(这里5没有右孩子)
6、继续访问第五步访问节点的双亲节点(5的双亲节点是6),下一步仍然访问其右孩子。
7、左子树访问完毕,继续第三步中右子树的访问,步骤与上面一直,最终每个节点都将访问一遍

这里写图片描述

按照中序遍历的访问规则,最终的输出序列应该是15,24,5,6,7,8,30,9,10,11,28。

可以发现这是一个递归过程,其递归代码也很简单,代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值