• 二叉树遍历


    二叉树的前序遍历、中序遍历和后序遍历之间还原

    1、概念
    (1)前序遍历

          a、访问根节点;b、前序遍历左子树;c、前序遍历右子树。

    (2)中序遍历

          a、中序遍历左子树;b、访问根节点;c、中序遍历右子树。

    (3)后序遍历

          a、后序遍历左子树;b、后续遍历右子树;c、访问根节点。

    2、前序遍历和中序遍历还原二叉树
    思想如下:

        a、根据前序遍历结果,第一个元素为二叉树的根结点;

        b、观察中序遍历结果,根结点左侧的为左子树,若左子树根结点前(后)再无任何元素,则左(右)子树的左分支为空;根结点右侧的为右子树,若右子树根结点前(后)再无任何元素,则左(右)子树的左分支为空;

        c、上面的过程是递归的。先找到当前树的根结点,然后划分为左右子树,再进入左子树重复上面的过程,最后进入右子树重复上面的过程,最终还原一棵树。
    ---------------------

    例:

        已知前序遍历:ABDHIEJKCFLMGNO

               中序遍历:HDIBJEKALFMCNGO

    按照上述步骤先画出二叉树,然后在进行求解后序遍历结果。结果为:HIDJKEBLMFNOGCA

    3、中序遍历和后序遍历还原二叉树

    思想如下:

        a、根据后序遍历结果,最后一个元素为二叉树的根结点;

        b、观察中序遍历结果,其中根结点左侧为左子树,若左子树根结点前(后)再无任何元素,则左(右)子树的左分支为空;其中根结点右侧为右子树,若右子树根结点前(后)再无任何元素,则左(右)子树的左分支为空;

        c、上面的过程是递归的。先根据后序遍历结果找根结点,根结点左侧为左子树,右侧为右子树,再进入左子树重复上面的过程,最后进入右子树重复上面的过程,最终还原一棵树。


    例:

        已知

    中序遍历:HDIBJEKALFMCNGO

    后序遍历:

    HIDJKEBLMFNOGCA

             


    按照上述步骤先画出二叉树,然后在进行求解前序遍历结果。结果为:

    ABDHIEJKCFLMGNO

    4、前序遍历和后序遍历还原二叉树
    已知前序和中序,后序和中序遍历序列之后,可以唯一确定一棵二叉树。但是,只知道前序和后序遍历序列,是无法知道哪个结点是左子树还算右子树。
    ---------------------

  • 相关阅读:
    [国家集训队]拉拉队排练 Manancher_前缀和_快速幂
    高手过愚人节 Manancher模板题_双倍经验
    [模板]manacher算法
    [POI2011]MET-Meteors 整体二分_树状数组_卡常
    [国家集训队]矩阵乘法 整体二分
    三维偏序(陌上花开) CDQ分治
    博客园美化之旅第一天(CSS图层关系,背景相关设置,字体相关设置)
    力扣题目解答自我总结(反转类题目)
    python插件,pycharm基本用法,markdown文本编写,jupyter notebook的基本操作汇总
    关于小程序websocket全套解决方案,Nginx代理wss
  • 原文地址:https://www.cnblogs.com/yyh19890221/p/10477974.html
Copyright © 2020-2023  润新知