• 二叉树的序列


    先序: 根节点、左子树、右子树 
    中序:左子树、根节点、右子树
    后序:左子树、右子树、根节点
    要理解清楚是子树,不是孩子。。。

    如上图根节点为A,那么{B、D、E、H}为左子树,而{C、F、G、I、J}组成其右子树。再深入A的左子树,它也是一棵二叉树,根节点为B,左子树为{D},右子树为{E、H}。依此类推。。

    先序:A、B、D、E、H、C、F、G、I、J
    中序:D、B、H、E、A、F、C、I、G、J
    后序:D、H、E、B、F、I、J、G、C、A



    今天数据结构的考试有这个题,做了好久,下来后,我好好地在网上查了一下,并结合我自己的理解,总结出来了一个比较好理解的方法。这个方法可以说做起这样的题又快又准。
     (概括为一个口诀:先序放中间,中序分两边)
     
     基本思想就是递归:

    1.取出先序的第一个节点。(先序中的节点为根节点)
    2.用第一个节点可以将中序分成左右子树,然后又取出先序的第二个节点
       再次将左右子树再次划分,
    3,当将中序全部划分为单个点时就结束。

    例如:假设一颗二叉树的先序序列是:EBADCFHGIKJ。 中序序列为:ABCDEFGHIJK。请画出该二叉树



    如何由二叉树的先序和中序序列画出二叉树 - wz625 - wanna

    生成的二叉树如下图所示:
    如何由二叉树的先序和中序序列画出二叉树 - wz625 - wanna
     


     问题扩展:
          1,只有先序和中序 或 中序和后序可以确定一颗树。先序和后序确定不了一颗树。
          2,如何根据中序和后序确定一颗树呢?
                 方法跟上面的由先序和中序确定一颗树的思想大同小异。
                 例如:中序:BEDAC  后序:   EDBCA
                                                                  <---------找根的方向
                     先是A是根,故有根A,左子树为BED  右子树为C
                     然后是C为根,C的左右子树均为空。
                     然后是B为根,B的左子树为空,右子树为ED
                     然后是D为根,D的左子树为E,右子树为空。
                      然后是E为根,左右子树均为空。

                根据上面几个步骤就可以将确定的树画出来
  • 相关阅读:
    Mac上面Mov转gif
    iOS crash日志分析
    Markdown 学习笔记
    Homebrew安装和使用
    XCode 出现 is missing from working copy文件一直红色情况解决方法
    Mac上面用来录屏的软件(录制gif图片或者mov)
    (十七)Hibnernate 和 Spring 整合
    (十六)Hibernate中的延迟加载
    (十五)Hibernate中的多表操作(5):双向多对多
    (十四)Hibernate中的多表操作(4):单向一对一
  • 原文地址:https://www.cnblogs.com/caozengling/p/5318504.html
Copyright © 2020-2023  润新知