已知,前[后]序,和中序遍历,如何简单地求出另一遍历
如题:
已知,前[后]序,和中序遍历,如何简单地求出另一遍历
譬如:
后:FDBGECA
中:BFDAEGC
请列出一些常用的规则,或者其他简单有效的方法。
穷举实在太慢。
举个例子吧
已知前序是ABCDEFG 中序是CBEDAFG 求二叉树
首先从取前序第1个字母(A) 按此字母把中序分成两段 (CBED) (AFG)
A做根 (CBED)做左子树 (FG)右子树
再按长度把前序后面的部分分成(BCDE) (FG)
问题就转换成
已知前序是BCDE 中序是CBED 求二叉树
和
已经前序是FG 中序是FG 求二叉树
看出来了没有,递归求解的.
下面的步骤省略分析.
前序 中序 : 根 左子树分解 右子树分解
BCDE CBED : B (C) (C) (ED) (DE)
C C : C
DE ED : D (E) (E)
E E : E
FG FG : F (G) (G)
G G : G
得出的二叉树就是
A
/ /
B F
/ / /
C D G
/
E