1、分析已知先中序的情况:

思路:先序序列中,根结点排在最前,然后在中序序列中考虑根结点左右两个子序列,它们分

别为左右子树的中序。

假设树的先序与中序为:
先:ABCD
中:ACBD


A为根结点,CBD为A的右子树中序序列。
问题简化为:
先BCD
中CBD
同理:B为根结点,C在B左是,D在B右则
简化为
先CD
中CD
此时C为根,D为右子结点。
A
  \
   B
  /  \
C     D 

2、分析已知中后序的情况:

思路:对于后序序列,最后一个一定是要结点,然后在中序序列中考虑根结点左右两个子序列,它们分

别为左右子树的中序。

假设:
中:BADC
后:BDCA



中:BADC 后:BDCA ==> A为根,中序BADC拆成 B与DC,此时确定了B为A的孩子,简化后,后序剩DC,中

序剩DC,此时C为根,再根据中序中D在C的左则,所以D为C左孩子。
结果为:
A
       /  \
      B    C
  /  
 D

 

 

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

            根据上面几个步骤就可以将确定的树画出来。