Basic binary heap tree using linked lists
var BinaryHeap = ;var heap = ;var a = 6 5 3 1 8 7 2 4;a;heap;while heaplengthconsole;
By default it stores as a max-heap, if you pass truthy to the constructor though it will behave as a min-heap.
insert(obj, key)-- obj can be any new or existing object, and key is any value that behaves sanely with
pop()-- removes and returns the maximum or minimum object from the root of the heap
remove(obj)-- removes a previously inserted object from the heap
print()-- mostly for debugging purposes prints a graphviz dot style digraph to confirm ordering
length-- number of objects currently in the heap