二叉树的遍历

2020-02-23  本文已影响0人  xiaoyouPrince

二叉树的遍历

二叉树遍历 分为前序遍历中序遍历后序遍历

前序遍历 (DLR)

先访问根节点,然后前序遍历左子树,然后前序遍历右子树。 FCADBEGHP (下图二叉树 a)

中序遍历 (LDR)

中序遍历左子树,再访问根节点,然后再中序遍历右子树。 ACBDFEHGP (下图二叉树 a)

后序遍历 (LRD)

后序遍历左子树,再后续遍历右子树,最后访问根节点。 ABDCHPGEF (下图二叉树 a)

经验总结
代表的是 根节点 的位置
L 永远在 R 的左边, R 永远在 L 的右边,【左子树始终在左边,右子树始终在右边】

二叉树a.png

题型举例 & 分析

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---

上一篇下一篇

猜你喜欢

热点阅读