二叉树的遍历
二叉树的遍历
二叉树遍历 分为前序遍历
、中序遍历
和后序遍历
。
前序遍历 (DLR)
先访问根节点,然后前序遍历
左子树,然后前序遍历
右子树。 FCADBEGHP (下图二叉树 a)
中序遍历 (LDR)
中序遍历
左子树,再访问根节点,然后再中序遍历
右子树。 ACBDFEHGP (下图二叉树 a)
后序遍历 (LRD)
后序遍历
左子树,再后续遍历
右子树,最后访问根节点。 ABDCHPGEF (下图二叉树 a)
二叉树a.png经验总结
前
、中
、后
代表的是根节点 的位置
L 永远在 R 的左边, R 永远在 L 的右边,【左子树始终在左边,右子树始终在右边】
题型举例 & 分析
1.求下图中二叉树前序遍历的结果:
1..png根据前序遍历规则DLR可以得到答案:ABDYECFXZ
2. 某二叉树的前序遍历为 ABCDEFG
,其中序遍历为 DCBAEFG
,求该二叉树的后续遍历
此题需牢记概念:
前序遍历(DLR) ---> 可以得出 A 为根节点
中序遍历(LDR) ---> 可以得出 DCB 为左子树,EFG 为右子树
后序遍历(LRD) ---> 结合前中遍历,发现左子树 DCB 的前序遍历(DLR)和中序遍历(LDR)恰好相反。即可得出得出左子树 DCB 如果没有R,其前(DL)中(LD)遍历正好相反。即可得知左子树 DCB 为没有右子树。同样右子树 EFG 的前(DLR)中(LDR)遍历相同,即没有左子树正好符合。
可画出该二叉树为:
2.png
其后续遍历为 DCBGFEA
3. 假设二叉树中序遍历 BCDA,前序遍历为 ABCD, 则后续遍历为
前序遍历 DLR 可以得出,根节点为 A,B为左子树或者右子树根节点。
从中序遍历 LDR 第一个为B,可以得出 B 是左子树的根节点。并且C是B的右子树,D是C的右子树
从分析中,可以得到该二叉树的图为
3.png
后续遍历为 DCBA
4. 某二叉树的前序序列为 ABCD,中序序列为 DCBA, 求后序遍历:
前序 DLR ---> A 是根节点,B是左子树根节点,或者右子树根节点
中序 LDR ---> DCB 为其左子树
其中前序 BCD 和中序DCB 为相反,恰为 DL 和 LD。所以推测为没有右子树,图为第二题的左侧子树。
规律
此树没有右子树,看它三种姿势
前序遍历 DLR --> DL
中序遍历 LDR --> LD
后续遍历 LRD --> LD
可以发现:没有右子树,前中遍历相反,中后遍历相同
5. 某二叉树后序序列与中序序列均为 ABCDEFGH,求其前序序列
应用到第四题规律,其中序后序序列相同为:LD,说明没有右子树。且根节点为H
通过分析即为只有左子树的: H G F E D C B A
6. 在具有 n 个节点的二叉树中,如果各个节点的值各不相同,但前序遍历序列与中序遍历序列相同,则该二叉树的深度为(根节点在第一层):n
分析:
前序序列 DLR
中序序列 LDR
后续序列 LRD
其中前序和中序相同即 DR,没有左子树,即只有右节点的单叉树。即n层。
---end---