先序遍历、 中序遍历一个森林分别等同于先序、 中序遍历该森林所对应的二叉树。现已知一个森林的先序序列和中序序列分别为 ABCDE

先序遍历、 中序遍历一个森林分别等同于先序、 中序遍历该森林所对应的二叉树。现已知一个森林的先序序列和中序序列分别为 ABCDEFIGJH 和 BDCAIFJGHE, 试画出该森林。


【正确答案】:

先根据给定的两个序列构造出相应的二叉树, 然后再将其转成森林:



【题目解析】:

先根据给定的两个序列构造出相应的二叉树, 然后再将其转成森林。

(1)由先序序列ABCDEFIGJH可以确定这颗二叉树的根结点是A。由根结点A和中序序列BDCAIFJGHE可以得到A的左子树{BDC}和右子树{IFJGHE}。

(2)由A的左子树{BDC}的先序序列ABCDEFIGJH,可以确定根结点是B;由根结点B和中序序列BDCAIFJGHE可以得到B的左子树为空,右子树为{DC}。

(3)由B的右子树{DC}的先序序列ABCDEFIGJH,可以确定根结点是C;由根结点C和中序序列BDCAIFJGHE可以得到C的左子树是D。

(4)A的右子树{IFJGHE}也同理可以得出,故构造的相应的二叉树为:


二叉树转换成森林的步骤:
(1)在待转换的二叉树中,断开根结点与右孩子的连线,得到两棵二叉树,其中一棵是以二叉树的根结点A为根的二叉树,另一棵是以根结点的右孩子E为根结点的二叉树。
(2)在以A为根结点的二叉树中,连接A与C,然后断开B和C。 
重复步骤(1)(2)对以E为根结点的二叉树进行转换。
即断开根结点与右孩子的连线,即断开FG、GH,连接EG、EH。故得到最终答案。