Binomial Heap
has quite special design. Personally I don't think this design is intuitive.
Although posts such as What is the difference between binary heaps and binomial heaps? talks about diff and its speciality, I am still wondering when I should use it.
In http://en.wikipedia.org/wiki/Binomial_heap, it says
Because of its unique structure, a binomial tree of order k can be constructed from two trees of order k−1 trivially by attaching one of them as the leftmost child of root of the other one. This feature is central to the merge operation of a binomial heap, which is its major advantage over other conventional heaps.
I presumes that an advantage of Binomial Heap is its merge. However, Leftist heap
also has O(logN) merge and much simpler, why we still use Binomial Heap? When should I use Binomial Heap?
edit
One of the actual question I wanna ask here is What's exactly the advantage of Binomial Heap?
The article for the Leftist tree says:
When inserting a new node into a tree, a new one-node tree is created and merged into the existing tree. To delete a minimum item, we remove the root and the left and right sub-trees are then merged. Both these operations take O(log n) time. For insertions, this is slower than binomial heaps which support insertion in amortized constant time, O(1) and O(log n) worst-case.
So it appears that the advantage of Binomial heap is that insertions are faster.
At least, that's what asympotitic analysis tells us. Real world running time is something else entirely and, as Gene said in his answer, depends on constant factors. The only way you can determine which is better for your application is to test them.