算法速记指南 - 二叉树遍历

三种遍历方式

关于二叉树的三种遍历:前序遍历,中序遍历,后序遍历。记忆时只需以二叉树根节点位置为基准,分别为前,中,后。
序遍历,表示从 →左→右
序遍历,表示从 左→→右
序遍历,表示从 左→右→

解答方法

1. 当给出二叉树,而要求写出遍历顺序时

例如,给出下图,要求写出三种遍历过程
二叉树示例图
前序遍历:A→B→D→G→H→C→E→I→F
中序遍历:G→D→H→B→A→E→I→C→F
后序遍历:G→H→D→B→I→E→F→C→A

具体描述下中序遍历的思路,其他遍历同理。
思路:在遍历时将整个二叉树拆分成小块的二叉树。但当遍历到的节点还有子节点时,需先继续向下延伸

如A B C三节点中,
在这里插入图片描述
从B开始,但是由于B节点还有子节点,则再以B为根节点。
在这里插入图片描述
从D开始,由于D节点还有子节点,再以D为根节点
在这里插入图片描述
从G开始,由于G点没有子节点,则直接遍历G点,G结束。
回溯到D,再向右遍历H点。以D为根节点的二叉树遍历结束。
此时顺序为 G→D→H
回溯到B点,G→D→H→B
B点结束,回溯到A点,G→D→H→B→A

A点向右以C为根节点:
在这里插入图片描述
从E开始,由于E节点还有子节点,再以E为根节点
在这里插入图片描述
E点没有左节点,则遍历顺序为E→I
E点结束,回溯到C,E→I→C
C点再向右到F,E→I→C→F
合并之前的顺序,因此整个遍历顺序为 G→D→H→B→A→E→I→C→F

2. 当给出遍历顺序,而要求画出二叉树时

这时一般都会给出两种遍历顺序:前中或者后中(只有前后可能会有多种二叉树),来要求画出二叉树。因此我们总能判断出根节点,而当判断出一个节点的位置后,只需将其从遍历顺序中删除,将原始顺序进行拆分,仅观察剩余部分即可

如已知
前序遍历:A→B→D→G→H→C→E→I→F
中序遍历:G→D→H→B→A→E→I→C→F
如何画出二叉树呢

思路:根据前序遍历,可知A为根节点。再在中序遍历中,可知 G→D→H→B 在A的左边,E→I→C→F 在A的右边。

将A从原始顺序中“删除”,则:
(将A点左右两边节点直接分开)
前序遍历:B→D→G→H C→E→I→F
中序遍历:G→D→H→B E→I→C→F

接下来只需分别将BDGH以及CEIF的顺序判断好即可。

对于
前序遍历:B→D→G→H
中序遍历:G→D→H→B
从前序遍历可知,B为根节点。再在中序遍历中,可知 G→D→H 在B的左边,B没有右节点。

再将B点删除,看剩余的DGH,则:
前序遍历:D→G→H
中序遍历:G→D→H
因此 D为根节点,G为D的左节点,H为D点右节点。
至此A点左半部分树状图为
在这里插入图片描述

右边节点EICF的推理过程同理,不再赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值