左派堆中等级的真正目的是什么?

时间:2013-07-23 16:22:41

标签: algorithm heap leftist-tree

Leftist heap维护每个节点的密钥和排名。节点的等级是到叶子的最短路径中的节点数。

整棵树需要维护两个属性:

  1. node.key< node.left.key&& node.key< node.right.key
  2. node.left.rank> = node.right.rank
  3. 我可以理解第一个属性,因为它是一个堆,很自然。

    但第二财产的目的是什么?为什么我们需要保持比左边短的权利?

    为了平衡目的?

1 个答案:

答案 0 :(得分:0)

你引用的文章说:

  

这些条件确保左派树是堆(具有最小键的元素位于堆的顶部),并且通过遵循右链接获得到叶节点的最短路径

您询问的条件和

P.rank = 1 + min( (P.left).rank, (P.right).rank );

确保第二个。

因为meld操作是沿着正确的节点,所以这确保了meld的对数性能。