【问题标题】:How to create a binary tree with the traversals given?如何使用给定的遍历创建二叉树?
【发布时间】:2014-03-08 23:31:06
【问题描述】:

好的,假设我们有两个列表:二叉树的前序遍历值,以及列表中给出的中序遍历值。现在,我需要创建一棵树(以列表形式,例如 [1, [2, [2, None, None], None], [1, None, None]])。我可以从遍历值中分辨出树的每一侧的根值和元素的数量,但我对如何创建树本身有点困惑。递归是解决这个问题的好主意吗,看看我们如何在主树中创建子树?

这也不能通过类来完成。它必须是一个函数。课程会让事情变得更容易,但我不应该使用它们。

【问题讨论】:

  • 发布您的尝试并解释您遇到的问题。
  • 一般来说,找出一种以给定形式创建树的方法让我感到困惑。我知道树必须采用 [value, child, child] 的形式,但不知道如何在适当的位置添加值。

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


【解决方案1】:

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] 是右孩子的前序遍历。递归构建左右子树。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 2022-11-11
    相关资源
    最近更新 更多