前:ADCEFGHB
中:CDFEGHAB
后:CFHGEDBA
A
D B
C E
F G
H
前序列的根在前面,中序列的根在中间,所以中序的A之前的CDFEGH 为A的左子树,B为A的右子树;
由前序可知D应该为A的左子树的根节点;
由中序列可知,C在D的前面,所以C是D的左子树;
再回头看前序已经确定了前面3个的位置,所以第4个位置的E,必然是D的右子树的根节点;
剩下的3个节点,都应该是E的子节点或者子孙节点;
中序列里F在E的前面,必然F为E的左子树;
还有2个节点没有确定,可以肯定是E的右子树,前序中G在H的前面,表明G是H的根节点;
中序中G在H的后面,说明H是G的右子树。
由此整个序列分析完毕,可以构建二叉树,推到后续遍历。