C#标准库中的B树类?

时间:2014-01-03 18:59:20

标签: c# tree

C#(.NET或Mono)基类库中的哪个类直接实现B树,或者可以快速重写/继承以实现B树?我看到了Hashtable类,但似乎找不到Tree家族的任何类...

必须有一个基础树类,可以通过指定树不变条件来重写生成特定的树实现(如B树或红黑或二叉树等)。让程序员重新发明基本数据结构的轮子是没有意义的(Tree在CompSci中是非常基础的),特别是在面向对象的语言中;所以我很确定我只是不正确地寻找...

编辑:

  1. 我没有使用Hashtable,也不认为它与树有关。我只是用它作为“BCL中另一个数据结构类”的例子。
  2. 对于那些对背景而言很好奇的用例。它用于O(log(N))搜索内存中的关联集。想象一下,为该关联集创建索引......

5 个答案:

答案 0 :(得分:8)

.NET中没有(公共)实现B-Tree。

没有公开的通用Tree类提供基于树的结构的部分实现。

您需要从头开始编写类似的内容,或者使用第三方实现而不是.NET实现。

答案 1 :(得分:3)

答案 2 :(得分:2)

我知道我参加聚会的时间非常晚,但我在BPlusTree上取得了很大的成功。作者用它做了很棒的工作。 http://csharptest.net/projects/bplustree/

答案 3 :(得分:1)

您可能希望查看我的B& B的通用C#实现。 GitHub中的B +树。

Advanced-Algorithms

答案 4 :(得分:0)

B-Tree for .NET on codeplex的实施看起来很有希望。 Performance-wise也是。

  

代码使用Store API存储&管理键/值对数据。   内部存储实现使用增强的,现代化的B-Tree实现,虚拟化RAM&磁盘存储。

     

与传统的

相比,这个B-Tree的一些关键增强功能      

实施是:

     
      
  • 节点负载优化使其保持在75%-98%的完全平均负载   内在与...叶节点。传统的B树只能实现   半满(50%)平均负载。这转化为更加压缩或   更密集的数据存储使IT部门免受昂贵的存储硬件的影响。
  •   
  • 叶节点'在特定情况下的高度被容忍不能完全平衡以有利于在零/最小成本的删除速度   交换。此外,由于删除导致的高度差异趋于得到   由于节点负载优化功能,在插入期间修复   上面讨论过。
  •   
  • 等......在时间允许的情况下等待记录/引用的更多增强功能。
  •