【问题标题】:Regrading rank in Binomial queue二项式队列中的重新排序等级
【发布时间】:2011-09-21 12:22:07
【问题描述】:

我正在阅读二项式队列操作here

在链接底部提到它

二项式队列的实现

  1. deletemin 操作需要能够找到根的所有子树。因此每个节点的子节点应该是可用的(比如一个链表)
  2. deletemin 要求子项按其子树的大小排序。
  3. 我们需要确保很容易合并发丝。只有大小相同的两棵二叉树才能合并,因此树的大小必须存储在根中。合并时,其中一棵树成为另一棵树的最后一个子节点,因此我们应该跟踪每个节点的最后一个子节点。一个好的数据结构是双重循环的 链表每个节点是什么形式如下:
数据 |第一个 |左 |右 |排名第 | ------------------------------------------ 孩子 |兄弟姐妹 |兄弟姐妹|孩子们

上面作者的“rank No. Of”是什么意思?谁能举例说明一下。

【问题讨论】:

    标签: algorithm binomial-heap


    【解决方案1】:

    据我了解,他试图说:我们存储rank,顺便说一句,它与no. of childen 相同(通常是这样定义此类树的等级的)。因此,您只需在每个节点中存储以下内容:

    • data 代表树中的元素
    • first 表示指向子链表的指针(即指向第一个子链表的指针)
    • left 是指向左邻居的指针
    • right 是指向右邻居的指针
    • rank 只是二叉树的等级

    【讨论】:

      【解决方案2】:

      请注意“只有大小相同的两棵二叉树才能合并,因此树的大小必须存储在根中。”

      似乎作者放了一个“子树数量”字段而不是“子树的大小”字段。这很令人困惑,但对于实现来说这很好,因为子树的大小是 2^{# of children}。所以你可以比较孩子的数量而不是比较子树的大小。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-05
        • 1970-01-01
        • 2019-03-11
        • 2016-03-14
        • 2013-03-06
        • 2020-01-25
        • 2022-07-28
        相关资源
        最近更新 更多