题目:
对某二叉树进行先序遍历的结果是ABDEFC,中序遍历的结果是DBEFAC,则后序遍历的结果是?
解答:
首先需要先了解何为先序遍历,中序遍历,前序遍历。
先序遍历:先遍历根节点,再遍历左子树,最后遍历右子树。
中序遍历:先遍历左子树,再遍历根节点,最后遍历右子树。
后序遍历:先遍历左子树,再遍历右子树,最后遍历根节点。
笼统地记忆:在什么时候遍历根节点,即为什么遍历。
题目给出的先序遍历是ABDEFC,由此可知,A为根节点。再根据中序遍历,以A为中心,左树为DBEF,右树为C。此时二叉树可以看成
接着,根据先序遍历BDEF可以判断,B为根节点。再根据中序遍历,以B为中心,左树为D,右树为EF。此时二叉树可以看成:
接着判断先序遍历的EF,E在前,即E为根节点。再根据中序遍历DBEFAC,可知,以E为中心,左树为空,右树为F。所以最终真正的二叉树如图:
此时要算出后序遍历的结果就很简单了。
左子树-右子树-根节点为它的规则。
整体可以先切成三部分,BDEF为可再分的左子树,C为右子树,A为根节点。
所以此时(BDEF)CA。BDEF还未分完,再在BDEF中,D为左子树,EF为可再分的右子树,B为根节点。所以此时的遍历为D(EF)BCA。最后再分EF,左子树为空,右子树为F,根节点为E,所以最后正确的后序遍历为DFEBCA。
扫码二维码
获取更多精彩
IT学习小镇