Javascript:需要一个体面的红黑树实现

时间:2010-11-17 12:38:38

标签: javascript implementation red-black-tree

我在哪里可以找到一个可以使用的?或者就此而言,如果你知道任何一个“标准”数据结构的好集合?

4 个答案:

答案 0 :(得分:11)

我在javascript中写了一个红黑树,可在此处获取:https://github.com/vadimg/js_bintrees或在{n}中为bintrees。与其他实现不同,它具有单元测试。

答案 1 :(得分:2)

答案 2 :(得分:1)

快速检查“Interwebs”是否出现了Kevin Lindsey的即用型实现(向下滚动到红黑树):

KevLinDev - Utilities

不幸的是,我不知道有一个现成的复杂数据结构存储库的网站。

我猜他们有点罕见,因为人们很少使用JavaScript来进行那种需要这些复杂结构的繁重工作......但我可能错了。

答案 3 :(得分:0)

只是添加我自己的实现以供参考。我创建了一个名为 scl 的包,其中包含许多不同的数据结构。它完全兼容 TypeScript,不同集合的 API 基本相同。虽然不完美,但有一些自动化单元测试可以确保一切正常。

import { RBTreeIndex } from "scl"

interface Person {
  name: string;
  email: string;
  age: number;
}

const people = new RBTreeIndex<Person, number>([
  {
    name: 'Bob',
    email: 'thebobman@gmail.com',
    age: 45,
  },
  {
    name: 'Fred',
    email: 'fred@outlook.com',
    age: 33,
  },
  {
    name: 'Lisa',
    email: 'lisa.turner@gmail.com',
    age: 37,
  }
]);

// Lisa is the oldest person who is at the very most 40 years old.
const lisa = people.getGreatestLowerBound(40);

// Bob is the youngest person older than Lisa
const bob = lisa.next();

// No one is older than Bob
assert(bob.next() === null);
 

您可以find the repository here和红/黑树实现的源代码here。该软件包也在 here 上的 npm 上。