Red-Black Tree in Typescript
A red-black tree is a data structure for sorted storage of key-value pairs.
Items are stored in tree nodes and sorted after a criterium (LessOp
).
Search, insertion, deletion and traversal are performed in $O(\log n)$ time.
This implementation has the same interface as JavaScript's built-in type
Map
, so it can be used as replacement for Map
, however iteration is
sorted according to the lessOp
parameter in the constructor.
The implementation seems to be rather efficient. I had a short stint with
profiling. Adding a million entries with a case-insensitive sort using
(a, b) => a.toUpperCase() < b.toUpperCase()
needed 5 seconds on my MacBook
Air 13inch early 2015. About half of that was inside C++ (internal String to
uppercase) and the other half in JavaScript, and of that about 7% in the
raw insert of the tree. I am no expert but this seems good to me. Have
a look at the profiler's output here.
Documentation
Is in the directory docs. (Something went wrong with typedoc's Markdown theme and I had to fix it manually for the moment, and because I am not a robot there might be broken links and other mistakes.)
Example
// tslint:disable: no-console // 30console.logstore.get'Tuac'!.age // Zoe Brown// Jane Doe// Billy Brown// John Doe// Vera Brownfor of store.values console.logperson.name // trueconsole.logstore.delete'bDe7' // falseconsole.logstore.delete'bDe7' // falseconsole.logstore.delete'TUAC' // 4console.logstore.size