一、现在,假设仅仅知道前序和中序遍历,如何求后序遍历呢?比如,已知一棵树的前序遍历是”GDAFEMHZ”,而中序遍历是”ADEFGHMZ”应该如何求后续遍历?
解法如下:
① 根据前序遍历可知树的根是G
②以G为分界点,再根据中序遍历知道,G左边的ADEF是左子树节点的中序遍历,而HMZ是右子树节点的中序遍历。
G
ADEF HMZ
③对于左子树,再根据其前序遍历的顺序DAFE可知,D为左子树的根。以D为分界点,根据中序遍历的结果知道,A是左子树,EF是右子树
G
D HMZ
A EF
④前序遍历是FE,中序遍历是EF,所以,F是根,E是左子树
G
D HMZ
A F
E
⑤对于右子树HMZ的分析也同样类似:利用前序遍历找跟,利用中序遍历区分左右子树,不断递归。
二、现在,假设仅仅知道后序和中序遍历,如何求前序遍历呢?
这种情况与第一种类似
,利用后序遍历,得到根,利用中序遍历区分左右子树,对左右子树分别进行递归调用。
三、现在,假设仅仅知道后序和前序遍历,如何求中序遍历呢?
这种情况下,所得结果不唯一。