Leftist heap维护每个节点的密钥和排名。节点的等级是到叶子的最短路径中的节点数。
整棵树需要维护两个属性:
我可以理解第一个属性,因为它是一个堆,很自然。
但第二财产的目的是什么?为什么我们需要保持比左边短的权利?
为了平衡目的?
答案 0 :(得分:0)
你引用的文章说:
这些条件确保左派树是堆(具有最小键的元素位于堆的顶部),并且通过遵循右链接获得到叶节点的最短路径
您询问的条件和
P.rank = 1 + min( (P.left).rank, (P.right).rank );
确保第二个。
因为meld操作是沿着正确的节点,所以这确保了meld的对数性能。