Binomial heap
The binomial heap data structure implements a priority queue. Arbitrary elements are added to the heap (i.e. queue), and at any time the minimum element can be removed. Additionally, a binomial heap can move all of its elements into another heap (merging). All of these individual operations take O(log n) time, where n is the number of elements in the heap.
I first implemented this data structure in university 2nd year in a computer science algorithms course. Though there are many implementations by others published online, the reason I’m publishing mine is because searching on the web, the code I saw was messy, not generic, or possibly containing subtle bugs. I hope my code will be useful for people looking to understand the algorithm and those extending my work.
Source code
 Java

The class implements the
java.util.Queue
interface, so it can be used as a dropin replacement ofPriorityQueue
as long asiterator()
is not called. The maximum queue size is unlimited, butsize()
will throw an exception aboveInteger.MAX_VALUE
.  Python

This implementation only supports the methods {
enqueue()
,dequeue()
,peek()
,merge()
,clear()
} and the builtin functionlen()
. Compatible with Python 2 and 3.  C++

The class is modeled after the Java version, supporting the methods {
size()
,enqueue()
,dequeue()
,peek()
,merge()
,clear()
}. It’s similar to the features provided bystd::priority_queue
. Requires C++11.
License: MIT (open source)