同学整理的关于二叉树问题之已知两种序列求第三种

(一):已知二叉树中序序列和后序序列,求先序序列

例:(白书P38613题)二叉树中序序列为abcdefg,后序序列为bdcafge,求先序序列

1.找根结点:

后序序列顺序为左右头,它最后一个定为根结点,根结点就为后序序列的最后一个------e

2.分左右孩子:

e为根结点,根据中序序列是左头右推出abcd是根结点的左孩子,fg为右孩子;

3.排左孩子:

中序序列为abcd,后序序列为bdca(递归到第一步)

1):找分支结点:

        后序序列最后一个为分支结点,分支结点为a

2):分左右孩子:

        a为分支结点,根据中序序列是左头右推出没有左孩子,bcd为右孩子;

3):排左孩子:

        无;

4):排右孩子:

        (此处省略过程,还是递归)排序为bc的左孩子,dc的右孩子,ca的右孩子;

4.排右孩子:

中序序列为fg,后序序列为fg(也是递归)

1):找分支结点:

        后序序列最后一个为分支结点,分支结点为g

2):分左右孩子:

        g为分支节点,根据中序序列是左头右推出

f为左孩子,无右孩子;

    (3):排左孩子:

            fg的左孩子;

4):排右孩子:

        无;

5.画二叉树:

                       e

                     /     \

                    a       g

                     \      /

                      c    f

                    /   \

                   b     d

6.写先序序列:为eacbdgf

(二):已知二叉树先序序列和中序序列,求后序序列

例:(白书P38618题)二叉树先序序列为EFHIGJK,中序序列为HFIEJKG,求后序序列

1.找根结点:

先序序列顺序为头左右,它第一个定为根结点,根结点就为先序序列的第一个------E

2.分左右孩子:

E为根结点,根据中序序列是左头右推出HFI是根结点的左孩子,JKG为右孩子;

3.排左孩子:

中序序列为HFI,先序序列为FHI(递归到第一步)

1):找分支结点:

        先序序列第一个为分支结点,分支结点为F

2):分左右孩子:

        F为分支结点,根据中序序列是左头右推出H为左孩子,I为右孩子;

3):排左孩子:

        HF的左孩子;

4):排右孩子:

        IF的右孩子;

4.排右孩子:

中序序列为JKG,先序序列为GJK(也是递归)

1):找分支结点:

        先序序列第一个为分支结点,分支结点为G

2):分左右孩子:

        G为分支节点,根据中序序列是左头右推出

JK为左孩子,无右孩子;

    (3):排左孩子:

            (此处省略过程,还是递归)KJ的右孩子,JG的左孩子;

4):排右孩子:

        无;

5.画二叉树:

                       E

                     /     \

                    F       G

                   /  \      /

                  H   I    J

                            \

                              K

6.写后序序列:为HIFKJGE

                                整理人:某位不愿透露姓名的帅哥

                                时间:2016.5.20

原文地址:https://www.cnblogs.com/wty20010315/p/5517057.html