如何创建具有遍历的二叉树?

时间:2014-03-08 23:31:07

标签: python binary-tree tree-traversal inorder preorder

好的,所以说我们给出了两个列表:二叉树的预订序遍历值,以及列表中给出的有序遍历值。现在,我需要创建一个树(以列表形式,例如[1,[2,[2,None,None],None],[1,None,None]])。我可以从遍历值中告诉树的每一侧的根值和元素数量,但是我对如何创建树本身感到困惑。对于这个问题,递归是一个好主意,看看我们如何在主树中创建子树?

这也不能用类来完成。它必须是一个功能。类会使它变得容易,但我不应该使用它们。

1 个答案:

答案 0 :(得分:0)

This可能会有所帮助。

要点:
通过预先遍历遍历[x1,...,xn]和有序遍历[z1,...,zn],您可以按如下方式重建树:

根是预订遍历x_1的头部。 令k为索引,使得z_k = x1。然后[z_1,...,z_k-1]是左子项的有序遍历,[z_k + 1,...,z_n]是右子项的有序遍历。按照元素的数量,[x_2,...,x_k]是左子女的预先遍历和[x_k + 1,...,x_n]右子女的预先遍历遍历。递归以构建左右子树。