为什么.NET中没有Tree <T>类?

.NET中的基类库对集合(列表,队列,堆栈,字典)有一些优秀的数据结构,但奇怪的是它没有包含二叉树的任何数据结构。 对于某些算法来说,这是非常有用的结构,例如那些利用不同遍历路径的算法。 我正在寻找一个正确书面,免费的实施。

我是盲目的,而没有发现它......它被埋在BCL的某个地方吗? 如果没有,有人可以推荐免费或开源C#/ .NET二进制树库? 最好使用泛型的一个。

编辑:澄清我在找什么。 我对内部使用树的有序字典集不感兴趣。 实际上,我对二叉树感兴趣 - 它揭示了它的结构,以便您可以执行诸如提取子树或执行节点后修复遍历等操作。 理想情况下,可以扩展这种类别以提供专门树木的行为(即红/黑,AVL,平衡等)。


你是对的,BCL没有任何东西。 我怀疑这是因为选择是否使用树通常是一个实现细节,否则是一种非常规的访问数据的方式。 也就是说,你不会说,“二进制搜索元素#37”; 相反,你说,“让我元素#37”。

但你有没有看过C5? 它超级方便,他们有几个树实现(1,2,3)。


你可以定义你自己的:

public class MyTree<K, V> : Dictionary<K, MyTree<K, V>>
{
    public V Value { get; set; }
}

或者不加键入:

public class MyTree<V> : HashSet<MyTree<V>>
{
    public V Value { get; set; }
}

你想从这样的实现中得到什么?

二叉树? 红黑? 基数树? B树? R树? R * - 树?

树比数据结构更像一种模式,并且它们倾向于在性能很重要的地方使用(因此实现细节可能也很重要)。 如果BCL包含某种树类,那么只需要自己推出自己的游戏

链接地址: http://www.djcxy.com/p/39867.html

上一篇: Why is there no Tree<T> class in .NET?

下一篇: Are there any open source C libraries with common data structures?