gwtw / js-binomial-heap

A JavaScript implementation of the binomial heap data structure
MIT License
6 stars 0 forks source link

js-binomial-heap

Build Status Coverage Status

A JavaScript implementation of the binomial heap data structure.

Features

* except delete and decrease key

Install

npm install --save @tyriar/binomial-heap

Usage

// Import npm module
var BinomialHeap = require('@tyriar/binomial-heap';

// Construct BinomialHeap
var heap = new BinomialHeap();
// Insert keys only
heap.insert(3);
heap.insert(7);
// Insert keys and values
heap.insert(8, {foo: 'bar'});
heap.insert(1, {foo: 'baz'});

// Extract all nodes in order
while (!heap.isEmpty()) {
  var node = heap.extractMinimum();
  console.log('key: ' + node.key + ', value: ' + node.value);
}
// > key: 1, value: [object Object]
// > key: 3, value: undefined
// > key: 7, value: undefined
// > key: 8, value: [object Object]

// Construct custom compare BinomialHeap
heap = new BinomialHeap(function (a, b) {
  return (a.key + a.value).localeCompare(b.key + b.value);
});
heap.insert('2', 'B');
heap.insert('1', 'a');
heap.insert('1', 'A');
heap.insert('2', 'b');

// Extract all nodes in order
while (!heap.isEmpty()) {
  var node = heap.extractMinimum();
  console.log('key: ' + node.key + ', value: ' + node.value);
}
// > key: 1, value: a
// > key: 1, value: A
// > key: 2, value: b
// > key: 2, value: B

Operation time complexity

Operation Complexity
clear Θ(1)
extractMinimum Θ(log n)
findMinimum O(log n)*
insert O(log n)
isEmpty Θ(1)
size Θ(1)
union Θ(log n)

* amortized

API

BinomialHeap

Creates a binomial heap.

Parameters

clear

Clears the heap's data, making it an empty heap.

extractMinimum

Extracts and returns the minimum node from the heap.

Returns Node node The heap's minimum node or undefined if the heap is empty.

findMinimum

Returns the minimum node from the heap.

Returns Node node The heap's minimum node or undefined if the heap is empty.

insert

Inserts a new key-value pair into the heap.

Parameters

Returns Node node The inserted node.

isEmpty

Returns boolean Whether the heap is empty.

size

Returns number The size of the heap.

union

Joins another heap to this one.

Parameters

Node

Creates a Binomial Heap node.

Parameters