Draft:Rank-pairing heap

In computer science, a rank-pairing heap is a data structure for priority queue operations. Rank-pairing heaps were designed to match the amortized running times of Fibonacci heaps whilst maintaining the simplicity of pairing heaps. Rank-pairing heaps were invented in 2011 by Bernhard Haeupler, Siddhartha Sen, and Robert E. Tarjan.

Structure
A rank-pairing heap is a list of heap-ordered trees represented in the left-child right-sibling binary tree format. This means that each node has one pointer to its left-most child, and another pointer to its right sibling. Additionally, each node maintains a pointer to its parent.

Find-min
We maintain a pointer to the node containing the minimum key. This will always be a root within the list of trees. The minimum key can thus be found at a constant cost, with only a minor overhead in the other operations.

Decrease-key
To decrease the key of a node $$x$$, reduce its key, and update the minimum key pointer, if it is the new minimum. Then, the subtree rooted at $$x$$ is detached; in the left-child right-sibling representation, this is equivalent to replacing $$x$$ with its right child $$y$$. The detached subtree is added to the list of trees, and the ranks are recalculated: the rank of $$x$$ is set to be one greater than its left child, and the ancestors of $$y$$ have their ranks reduced.