根据二叉树的前序遍历和中序遍历求其后序遍历或者根据二叉树的后序遍历和中序遍历求其前序遍历是腾讯等校招的必考题,下面我们就来分析一下解题思路。
这道题本质上是要我们根据二叉树遍历序列确定二叉树,只要二叉树确定了,求它的任何遍历序列都是易如反掌的。
理论基础:
由二叉树的先序遍历序列(PreorderTraverse)和中序遍历序列(InorderTraverse)或由其后序遍历序列(PostorderTraverse)和中序遍历序列均能唯一地确定一棵二叉树。
求解过程: 1. 先序序列第一个结点一定是二叉树的根节点 。 2. 根节点在中序序列中必然将中序序列分割为两个子序列,前一个序列为根节点的左子树的中序序列,后一个序列为根节点的右子树的中序序列。 3. 递归使用以上两条法则,直到序列只剩下一个结点。
如果是后序序列和中序序列,那么步骤1改为后序序列的最后一个结点一定是二叉树的根结点。
例:已知结点的先序序列和中序序列分别为: 先序序列:18 14 7 3 11 22 35 27 中序序列:3 7 11 14 18 22 27 35 则可按上述分解求得整棵二叉树。
作者注: