根据相关概念,前序遍历的第一个结点一定是根结点(类似问题如果给出的是后序则最后一个一定是根结点)。于是可以据此将中序序列由根划分出左右子树来。如是递归下去,最后总能构造出完整的树来,并写出所求的后序序列。
以你给的问题为例:整棵树的根结点为前序的第一个点即A,于是根据中序可知左子树含结点DBGE、右子树含结点CHFI。分别递归分析左子树和右子树:左子树的根为前序中“BDEG”段内的第一个结点即B,右子树根为C…………类似一直进行到最小情况为止,树就可以构造出来了。
建议做完问题后可以在计算机上写个递归程序(以前序 中序为输入,后序为输出)加深一下对这种问题的理解。
根据中序,前序可分拆为:A{BDEG}{CFHI}
A
{BDEG} = {B[D][EG]} = {B[D][E(G)]}
{CFHI} = {C[FHI]} = {C[F(H)(I)]}
因此,后序是:DGEBHIFCA