已知一棵二叉树的先序遍历为:
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结点),无右子树。
还原二叉树为:
所以后序遍历为:
GDBEHFCA
By:AloneMonkey