【数据结构与算法】二叉树的前序、中序、后序遍历

本文详细介绍了二叉树的前序、中序、后序遍历概念,通过实例解析了遍历过程,并探讨了编程实现遍历的方法。前序遍历顺序为:根-左子树-右子树;中序遍历顺序为:左子树-根-右子树;后序遍历顺序为:左子树-右子树-根。
摘要由CSDN通过智能技术生成

参考了这篇文章:https://www.jianshu.com/p/456af5480cee

概念

前序:
考查到一个节点后,即刻输出该节点的值(访问该节点),并继续遍历其左右子树。(根-左子树-右子树)。
中序:
考查到一个节点后,将其暂存,遍历完左子树后,再输出该节点的值(访问该节点),然后遍历右子树。(左子树-根-右子树)
后序:
考查到一个节点后,将其暂存,遍历完左右子树后,再输出该节点的值(访问该节点)。(左子树-右子树-根)

注意

3种遍历的概念,可以简要概括为:
前序:根-左子树-右子树
中序:左子树-根-右子树
后序:左子树-右子树-根
在有些参考资料里,把左右子树偷换概念为左右节点,比如前序:根-左节点-右节点,这是不正确的表达与理解,千万不要这样记!!!

访问和考查的区别:
考查一个节点,跟访问节点是不一样的,考查到一个节点,但不一定会访问它。

编程实现时,考查指的是:有一个变量专门存放当前节点,即考查到当前节点,访问指的是:从当前节点里拿出它的值。

遍历是什么意思:
所谓遍历若干个节点,指的是按照某种顺序访问完这若干个节点。

考查的起点:
只能从二叉树的根节点开始考查。如果用指针的概念来理解,指针都是从父节点指向子节点的,整棵树的指针都是往下指的,给出子节点,是找不到其父节点的。

人工得出遍历顺序

前序(根-左子树-右子树)

从根节点1开始考查,访问根节点1,输出1
遍历根节点1的左子树,对于左子树来说,根节点为2,访问节点2,输出2
遍历节点2的左子树,其根节点为4,访问节点4,输出4
该遍历节点4的左子树了,但它没有左子树,故遍历其右子树,右子树的根节点为6,访问节点6,输出6,然后遍历其左子树(只有一个节点),输出7,然后遍历其右子树(只有一个节点),输出8
回过头看根节点1,自身已经被访问了,其左子树也被访问完了,该遍历其右子树了,右子树的根节点为3,访问节点3,输出3,节点3没有左子树,只有右子树,遍历其右子树(只有一个节点),输出5

访问顺序:12467835

中序(左子树-根-右子树)

从根节点1开始考查,先遍历其左子树,左子树的根节点为2,先遍历其左子树,左子树的根节点为4,先遍历其左子树,但节点4没有左子树,就访问节点4,输出4,然后遍历其右子树,右子树的根节点为6,遍历其左子树,输出7,访问根节点6,输出6,遍历其右子树,输出8
回过头看节点2,其左子树已经访问完了,访问节点2,输出2,节点2没有右子树就不管了。
回过头看节点1,其左子树已经访问完了,访问节点1,输出1,该访问节点1的右子树了,右子树的根节点为3,节点3没有左子树,那就访问节点3,输出3,然后访问右子树,输出5

访问顺序:47682135

后序(左子树-右子树-根)

从根节点1开始考查,先遍历其左子树,左子树的根节点为2,先遍历其左子树,左子树的根节点为4,先遍历其左子树,但它没有左子树,于是遍历其右子树,右子树根节点为6,先遍历其左子树,输出7,再遍历其右子树,输出8,然后访

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值