【问题标题】:Binary tree construction二叉树构造
【发布时间】:2017-10-02 10:18:53
【问题描述】:

是否可以构造二叉树。如果二叉树的前序遍历和它的镜像树都给出。如果有怎么办?
二叉树的前序 - 1,2,4,5,6,3,7
这棵树的镜像预排序 - 1,3,7,2,5,6,4

【问题讨论】:

    标签: tree binary-tree mirror preorder


    【解决方案1】:

    当然可以。

    在您的示例中,您知道树的根是 1。那么问题是找出所有剩余值 [2,4,5,6,3,7],哪些属于左子树,哪些属于右子树。然后,您可以简单地对这两个组进行递归调用,并将这些子树与根连接。

    现在想象[2,4,5]形成左子树。所以来自右子树的所有值,[6,3,7] 必须在镜像数组中的任何这些值之前。这不是这里的情况。所以我们必须找到一个新的点来拆分它们。

    现在让[2,4,5,6] 形成左子树。所以,[3,7] 必须形成正确的一个。那么在镜像中,所有[3,7] 必须在任何[2,4,5,6] 之前。这似乎就是这种情况。

    总而言之,对于从 0 到剩余值长度的每个 i(除 1 之外的所有值),检查普通树中的前 i 个值是否等于镜像中的最后 i 个值,如果是,则拆分,因为值可能不会保持精确的顺序,您可能需要在检查之前进行排序,或者将它们放在一组中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多