首页 > 试题广场 >

已知二叉树的中序遍历结果为MFLEDABKCGHJI,后序遍

[填空题]
已知二叉树的中序遍历结果为MFLEDABKCGHJI,后序遍历结果为FELMDKHGJICBA,则其先序遍历结果为1
对一棵二叉树进行遍历,我们可以采取3中顺序进行遍历,分别是前序遍历、中序遍历和后序遍历。
这三种方式是以访问父节点的顺序来进行命名的。假设父节点是N,左节点是L,右节点是R,那么对应的访问遍历顺序如下:

前序遍历    N->L->R   ?我们要推断的
中序遍历    L->N->R   MFLEDABKCGHJI
后序遍历    L->R->N   FELMDKHGJICBA

其实,只要知道其中任意两种遍历的顺序,我们就可以推断出剩下的一种遍历方式的顺序,这里我们只是以:知道后序遍历和中序遍历,推断先序遍历作为例子,其他组合方式原理是一样的。要完成这个任务,我们首先要利用以下几个特性:
特性A,对于前序遍历,第一个肯定是根节点;
特性B,对于后序遍历,最后一个肯定是根节点;
特性C,利用前序或后序遍历,确定根节点,在中序遍历中,根节点的两边就可以分出左子树和右子树;
特性D,对左子树和右子树分别做前面3点的分析和拆分,相当于做递归,我们就可以重建出完整的二叉树;

1.根据特性B,对于后序遍历,最后一个肯定是根节点;得出根节点:A
根据特性C,在中序遍历中,根节点的两边就可以分出左子树和右子树
            A
        /        \
MFLED   BKCGHJI

2. 取出左子树,在中序的左子树:MFLED    在后序的左子树:FELMD
根据特性:对于后序遍历,最后一个肯定是根节点;
得出左子树的父节点是D,并且D没有右子树
           A
         /    \
       D   BKCGHJI
      /
 MFLE
3.使用同样的方法:
后序是FELM 中序是MFLE
所以,M为父节点,并且M没有左节点
                A
              /    \
           D   BKCGHJI
         /
      M
        \
       FLE
接着后序FEL,中序FLE
所以L为父节点,F为左节点,E为右节点

                 A
               /   \
             D BKCGHJI
           /
        M
           \
            L
           /   \
         F     E

4.取出右子树,中序:BKCGHJI  后序:KHGJICB
父节点为B,
            A
          /    \
        D      B
      /             \
   M           KCGHJI
     \
      L
     /   \
   F     E
中序:KCGHJI  后序:KHGJIC,父节点:C
左节点:K,右节点:GHJI

               A
             /    \
           D      B
         /            \
      M              C
       \             /   \
        L       K    GHJI
       /  \
     F    E
中序:GHJI,后序:HGJI,父节点:I,只有左节点GHJ

                      A
                    /    \
                 D       B
                /           \
             M            C
                \          /   \
                 L      K    I
                /   \         /
               F   E    GHJ
中序:GHJ,后序:HGJ,父节点:J,只有左节点:GH
                         A
                       /    \
                    D      B
                  /            \
                M            C
                  \          /    \
                   L       K      I
                 /   \            /
               F     E      J
                            /
                          GH
中序:GH,后序:HG,父节点:G,只有右节点H
                                 A
                               /    \
                             D      B
                           /           \
                         M             C
                            \           /   \
                             L       K      I
                           /   \            /
                        F      E      J
                                      /
                                    G
                                      \
                                       H
进行先序排列:根左右 :A,DMLFE,BCKIJGH
结果为:ADMLFEBCKIJGH
编辑于 2018-01-09 13:45:21 回复(1)
后序遍历最后一个节点推出树根,用中序推出左右子树元素分别都是什么。 分治思想 很快得到整个二叉树。
发表于 2018-02-02 15:26:27 回复(0)