如何理解<purely functional =“”data =“”structure =“”> </purely>中描述的分段二项式堆

时间:2011-11-23 05:50:20

标签: haskell data-structures functional-programming lisp ml

在论文Purely Functional Data Structures的第6.3.1章中说:

  

然后,每当我们从新元素和片段创建新树时   排名为0 ... r-1的树,我们只是将新元素与   段中的第一个根(即,等级0树的根)。该   较小的元素成为新的根,更大的元素变为   根的0级孩子。

  1. T0'是新树的等级0
  2. T0..T(r-1)是原始树木等级0到r-1
  3. 较小的元素成为新的根,较大的元素成为根
  4. 的0级子元素

    问题是第3步导致两个排名1树,这与二项式堆冲突。

    我误解了吗?

1 个答案:

答案 0 :(得分:4)

我们正在创建一个排名为r的树。秩r的树的结构是具有r个子级为0..r-1的根节点。

你引用的部分是什么意思。

  1. 当我们得到一个新元素x时,我们将它与T0
  2. 中的元素进行比较
  3. 我们创建一个排名为0的新树T0',其中包含两个比较元素中较大的一个
  4. 我们创建一个新节点T,其中包含两个比较元素中的较小者以及T0',T1,T2 ... T(r-1)作为子节点
  5. 现在T是秩为r的二叉树,它按堆次序排列。