已知前序遍历和中序遍历求后序遍历
1.知识必备
①二叉树的三种遍历
②递归的原理
2.题目描述
已知二叉树的前序遍历为( ABCDFE ),中序遍历(BADFCE ),求该二叉树的后序遍历。
3.求解思想
前序,中序遍历顺序图
在前序遍历中,根节点将中序遍历分为两个部分,左子树和右子树。如果将元素个数进行简化,假设在中序遍历中被根节点分割的左右子树中都只有一个元素,那么可以很容易得到二叉树的形状,也就可以得到后序遍历。说明当这个问题简化成小问题时,可以很容易解决。
4.算法步骤
①在前序遍历中取第一个点,即为根节点。
②在中序遍历中找到这个点所在的位置。下标从 0 开始,假设找到根节点在下标为 index 的位置
③根节点将字符串分为左右两个子串(看上图的中序遍历),左子树 为 父串 的(0,index-1),右子树为父串的
( index+1 ,父串的结尾)。注:括号内容的含义,(起点下标,终点下标) ; 知道了左右子树的起始位置和终止位置,那么左右子树的长度可以很容易得到(终点下标 - 起点下标 + 1),那么左子树在前序遍历中的位置也可以很容易得到 (1,index),右子树同理。
④将左右子树对应的前序遍历,中序遍历,在进行步骤①-③的操作,直到左右子树的长度为 0
5.源代码
下载地址:
http://download.csdn.net/detail/qq_28648083/9801315