Loading...

文章背景图

二叉树的遍历与还原

2026-08-27
4
- 字
- 分钟
|

由树写序列

给一棵树,怎么报出四种序列,举例:

        a
       / \
      b   c
       \  / \
        d e   f
           \
            g

先序序列

NLR:先根,再左子树,再右子树。

a是根,先报a。

a

左右子树的根是b和c,跟在后面。

a b c

当b为根,d在右,b后面补d。

a b d c

当c为根,e在左,f在右,e、f跟在c后面。

a b d c e f

当e为根,g在右,g排在e后、f前。

a b d c e g f

NLR(先序遍历): a, b, d, c, e, g, f

中序序列

LNR:先左子树,再根,再右子树。

第一遍只看大框架:左子树在前,根a居中,右子树在后。

b a c

当b为根,d在右,b的子树排成b d。

b d a c

当c为根,e在左,f在右,c的子树排成e c f。

b d a e c f

当e为根,g在右,e的子树排成e g。

b d a e g c f

LNR(中序遍历): b, d, a, e, g, c, f

后序序列

LRN:先左子树,再右子树,根最后。

第一遍只看大框架:左子树在前,右子树居中,根a最后。

b c a

当b为根,d在右,b的子树排成d b。

d b c a

当c为根,e在左,f在右,c的子树排成e f c。

d b e f c a

当e为根,g在右,e的子树排成g e。

d b g e f c a

LRN(后序遍历): d, b, g, e, f, c, a

层序序列

从上往下,一层一层,每层从左到右。

第一层只有a。

a

第二层是a的孩子:b, c。

a b c

第三层是b、c的孩子:d, e, f。

a b c d e f

第四层只剩e的孩子:g。

a b c d e f g

层序遍历: a, b, c, d, e, f, g

中序序列加任意序列还原树

若已知中序序列,再给出其他三种遍历序列中的任意一种,就可以唯一地确定一棵二叉树。

中序序列加先序序列

NLR(先序遍历): a, b, d, c, e, g, f
LNR(中序遍历): b, d, a, e, g, c, f

NLR定根,LNR分左右。

NLR首位是a,根为a;LNR中a左侧的b,d是左子树,右侧的e,g,c,f是右子树。

a

左子树里NLR中b在d前,b为根;LNR中d在b右,d为b的右孩子。

    a
   /
  b
   \
    d

右子树里NLR中c在最前,c为根、a的右子孩子;LNR中e,g在c左,f在c右。

    a
   / \
  b   c
   \
    d

以此类推:c的左子树里NLR中e在g前,e为根;LNR中g在e右,g为e的右孩子。

        a
       / \
      b   c
       \  /
        d e
           \
            g

只剩f,f为c的右子孩子。

        a
       / \
      b   c
       \  / \
        d e   f
           \
            g

中序序列加后序序列

LNR(中序遍历): b, d, a, e, g, c, f
LRN(后序遍历): d, b, g, e, f, c, a

LRN定根取末位,LNR分左右。

LRN末位是a,根为a;LNR中a左侧的b,d是左子树,右侧的e,g,c,f是右子树。

a

左子树里LRN中b在d后,b为根;LNR中d在b右,d为b的右孩子。

    a
   /
  b
   \
    d

右子树里LRN中c在g,e,f后,c为根、a的右子孩子;LNR中e,g在c左,f在c右。

    a
   / \
  b   c
   \
    d

以此类推:c的左子树里LRN中e在g后,e为根;LNR中g在e右,g为e的右孩子。

        a
       / \
      b   c
       \  /
        d e
           \
            g

只剩f,f为c的右子孩子。

        a
       / \
      b   c
       \  / \
        d e   f
           \
            g

中序序列加层序序列

LNR(中序遍历): b, d, a, e, g, c, f
层序遍历: a, b, c, d, e, f, g

层序定根取最先出现的,LNR分左右。

层序首位是a,根为a;LNR中a左侧的b,d是左子树,右侧的e,g,c,f是右子树。

a

左子树里层序中b比d先出现,b为根;LNR中d在b右,d为b的右孩子。

    a
   /
  b
   \
    d

右子树里层序中c比e,g,f先出现,c为根、a的右子孩子;LNR中e,g在c左,f在c右。

    a
   / \
  b   c
   \
    d

以此类推:c的左子树里层序中e比g先出现,e为根;LNR中g在e右,g为e的右孩子。

        a
       / \
      b   c
       \  /
        d e
           \
            g

只剩f,f为c的右子孩子。

        a
       / \
      b   c
       \  / \
        d e   f
           \
            g
原创

二叉树的遍历与还原

本文链接: 二叉树的遍历与还原

本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

评论交流

文章目录