从两个遍历输出创建二叉树

Creating A Binary Tree From Two Traversal Output

这是作业,但由于某些原因不允许我添加作业标签。

我们被分配了一个数据结构实验室,其中最后一个问题要求我们找到将从给定遍历方法产生以下输出的二叉树:

LRN: 12, 9, 4, 7, 1, 14, 8, 13, 10, 15, 11, 2, 5, 16, 6, 3

LNR: 12, 3, 4, 9, 8, 1, 7, 14, 6, 13, 10, 16, 5, 15, 2, 11

我已经确定了关于这棵树的以下信息:

根节点为3。树的左边child且仅左边child的根节点为12。右边的根节点child为6。最右边的节点是 5.

不幸的是,我对如何进行感到困惑。任何提示将不胜感激。

从post-order(LRN),我们知道最后一个元素是根。我们可以按顺序(LNR)找到根。那么我们就可以从in-order中找出根的左右子树了。

利用左子树的长度,我们可以识别post阶数组中的左右子树。递归地,我们可以建立树。

检查 this link。