140 likes | 282 Views
CS 261. Binary Heaps. A Different Type of Heap. Start with the same heap order property, but build it out of binomial trees Use a collection of heaps Merge heaps of the same size. Binomial Tree. A recursive data structure
E N D
CS 261 Binary Heaps
A Different Type of Heap • Start with the same heap order property, but build it out of binomial trees • Use a collection of heaps • Merge heaps of the same size
Binomial Tree • A recursive data structure • A node has binomial trees of lower order as children, from order k down to order 0
Overcoming Limitations of the Tree • Can only keep things which are a sum of a power of 2 • But if we keep a list of trees we can get any number of nodes • Like binary numbers
Our Powers Combined! • Merging is a key operation • Many other operations will call merge as a subroutine • Takes two heaps and merges them
Merging Trees • If we have two trees of the same size how do we merge them? • Just make the one with the bigger key the leftmost child of the root of the other
Merging heaps • Look at each tree in the list from smallest to biggest • If only one heap has a tree of order n, add it to the merged heap • Otherwise merge the two trees into a tree of order n+1 and merge that into the new heap
Adding To a Heap • How do we add to a binomial heap? • Can we just use merge somehow?
Finding the Minimum • Is it still O(1)? • If it is not, can we be tricky and make it so?
Removing the minimum • The minimum will always be a root • Remove that root, then merge the resulting heap with the old heap
It’s All log(n) • Or maybe find minimum is O(1) if we are smart about it