快速根据二叉树前序中序遍历求后序遍历

已知一棵二叉树的先序遍历为:

ABDGCEFH

中序遍历为:

DGBAECHF

求二叉树后序遍历。

分析:先序遍历序列的第一个字符为根结点。对于中序遍历,根结点在中序遍历序列的中间,左边部分是根结点的左子树的中序遍历序列,右边部分是根结点的右子树的中序遍历序列。

 

先序:ABDGCEFH  →  A   BDG   CEFH

中序:DGBAECHF  →  DGB   A   ECHF 

得出结论:A是树根,A有左子树和右子树,左子树有BDG结点,右子树有CEFH结点。

 

先序:BDG  →  B   DG

中序:DGB  →  DG   B

得出结论:B是左子树的根结点,B无右子树,左子树有DG结点。

 

先序:DG  →  D   G

中序:DG  →  D   G

得出结论:D是B的左子树的根结点,D无左子树,右子树有G结点。

 

先序:CEFH  →  C   E   FH

中序:ECHF  →  E   C   HF

得出结论:C是右子树的根结点,C有左子树(只有E结点),右子树有FH结点。

 

先序:FH  →  F   H

中序:HF  →  H   F

得出结论:F是C的左子树的根结点,F有左子树(只有H结点),无右子树。

 

还原二叉树为:

 

image

 

所以后序遍历为:

GDBEHFCA

 

 

 

By:AloneMonkey

本文链接:http://www.alonemonkey.com/binary-tree-ergodic.html