二叉树遍历案例--详解 (前序遍历、中序遍历、后序遍历)

本文详细讲解了二叉树的前序、中序、后序遍历,通过实例展示了遍历过程,并介绍了如何根据遍历结果推导树的结构。前序遍历结果为1 2 5 8 3 6 7,中序遍历结果为2 5 8 1 6 3 7,后序遍历结果为8 5 2 6 7 3 1。
部署运行你感兴趣的模型镜像

一:前序遍历

对于当前节点,先输出该节点,然后输出它的左孩子,最后输出它的右孩子。

即根结点 ---> 左子树 ---> 右子树。以上图为例,递归的过程如下:

 

  1. 首先输出根节点1。

  2. 输出左儿子2。

  3. 因为2没有左儿子,所以输出下一个,即输出右儿子5。

  4. 因为5没有左儿子,所以输出下一个,即输出右儿子8。

  5. 至此根的左儿子都输出完毕,开始输出它即1的右儿子,右儿子第一个为3。

  6. 输出3的左儿子6。

  7. 输出3的右儿子7。

  8. 至此全部输出完毕,结束。

所以输出的结果前序遍历结果是:1  2  5  8  3  6  7

 

二:中序遍历

首先遍历左子树,然后访问根结点,最后遍历右子树。若二叉树为空则结束返回。

即左子树---> 根结点 ---> 右子树。以上图为例,对左右子树分别进行左儿子-->自己-->右儿子输出,递归的过程如下:

  1. 首先输出左儿子,因为2没有左儿子,所以输出自己2。

  2. 准备输出2的右儿子5,若5有左儿子,则输出该元素,现在因为5没有左儿子,所以输出5。

  3. 输出5的右儿子8。

  4. 至此左子树输出完毕,输出根节点1。

  5. 开始输出右子树,因为3有左子树,所以首先输出6,然后输出3。

  6. 输出3的右子树7。

  7. 至此全部输出结束。

所以输出的结果中序遍历结果是:2  5  8  1  6  3  7

 

三:后序遍历

对于当前结点,先输出它的左孩子,然后输出它的右孩子,最后输出该结点。即左子树 ---> 右子树 ---> 根结点 递归的过程如下:
 

  1. 首先输出左子树,因为2有右孩子5,而5又有右儿子,所以先输出8。

  2. 输出8之后,输出自己5。

  3. 然后输出节点2。

  4. 至此左子树遍历完毕,开始遍历右子树,因为3有左子树,所以输出6,输出右子树7,最后输出自己3。

  5. 最后输出根节点1。

  6. 至此全部输出完毕。

所以输出的结果后序遍历结果是:8  5  2  6  7  3  1

 

四:讲完了左右子树的概念之后,我们根据前序遍历中序遍历推导树的结构。

前序遍历:1  2  5  8  3  6  7

中序遍历:2  5  8  1  6  3  7

  1. 首先知道前序遍历的第一个节点是根节点1,可以通过该节点1在中序遍历中把子树分成左右子树,即左子树中有2  5  8,右子树中右6  3  7

  2. 根据前序遍历的特点,我们可以得到2是左子树的根节点。

  3. 那么5,8的具体的位置,我们无法从前序遍历中得到结果,那么我们是否可以从中序遍历中获取结果呢?根据中序遍历的特点(左儿子-->自己-->右儿子)我们可以得到5是2的右儿子。

  4. 再来看8,因为5是2的右儿子,所以8不可能是2的儿子,8只能是5的儿子,那么8是5的左儿子还是右儿子呢?假设8是5的左儿子,那么不满足中序遍历的2  5  8,而应该是2  8  5,所以8是5的右儿子。

  5. 至此左子树的排序完成。

  6. 再来看右边的6  3   7。

  7. 根据前序遍历,去掉2  5  8,可得3  6  7,那么3是右子树的根节点。

  8. 再根据中序遍历的特点,因为右子树是6  3   7,所以6是3的左儿子,7是3的右儿子。

  9. 至此右子树的分析也结束了。

至此我们得到了整棵数的结构。

 

五:我们根据中序遍历后序遍历推导树的结构。

中序遍历:2  5  8  1  6  3  7

后序遍历:8  5  2  6  7  3  1

  1. 根据后序遍历的特点,即根节点是后序遍历的最后一个节点1,可以通过1,在中序遍历中把树分成左子树和右子树,即1的左半部分为左子树2  5  8,右子树6  3  7。

  2. 根据后序遍历的特点是左子树-->右子树-->自己,所以8  5  2中2是左子树的根节点。

  3. 根据中序遍历,5  8在2的右边,所以只能是2的右子树的元素,又2只会有一个右儿子,所以5是2的右儿子,最后剩下8是5的什么儿子呢?根据中序遍历的特点,若8是5左儿子,那么中序遍历应该是2  8  5,所以8是5的右儿子。

  4. 至此1的左子树排序完成。

  5. 再看6  3  7,根据后序遍历,可得3是右子树的根节点,再看中序遍历,6  3  7,所以6 7分别是3的左儿子和右儿子。

  6. 至此右子树排序完成。

至此我们得到了整棵数的结构。

您可能感兴趣的与本文相关的镜像

Qwen3-8B

Qwen3-8B

文本生成
Qwen3

Qwen3 是 Qwen 系列中的最新一代大型语言模型,提供了一整套密集型和专家混合(MoE)模型。基于广泛的训练,Qwen3 在推理、指令执行、代理能力和多语言支持方面取得了突破性进展

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值