美文网首页
二叉树的遍历

二叉树的遍历

作者: xiaoyouPrince | 来源:发表于2020-02-23 20:55 被阅读0次

    二叉树的遍历

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

    前序遍历 (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---

    相关文章

      网友评论

          本文标题:二叉树的遍历

          本文链接:https://www.haomeiwen.com/subject/lrosqhtx.html