9得票5回答
在红黑树中存储颜色信息时如何节省内存?

我在Coursera算法课程中遇到了这个问题,意识到我不知道如何解决。但是,我对此有一些想法。脑海中浮现出的第一件事是使用优化的位集(如Java的BitSet)来获取映射节点的key -> color。所以,我们只需要为整个树分配一个位集,并将其用作颜色信息源。如果树中没有重复元素,那么...

9得票2回答
std::map<t1, t2>::erase(iterator position) 的工作原理是什么?

我在 cplusplus.com 上读到,通过传递迭代器作为参数来删除 std::map 中的元素的操作是常数时间。如果我没错(请纠正我),迭代器基本上是指向映射中元素的指针,并且 ++ 运算符只返回当前元素的顺序继承者,我想这就是在遍历 std::map 时实现排序结果的方式。现在,如果 m...

9得票4回答
在C#中实现红黑树

我正在寻找一个在C#中实现红黑树的实现, 具有以下特点: 搜索、插入和删除的时间复杂度为O(log n)。 成员类型应该是通用的。 支持Comparer(T),以便按不同字段对T进行排序。 在树中搜索应该是针对特定字段的,因此它不会接受T,但会接受对其进行排序的字段类型。 搜索不应只限于精...

9得票3回答
迭代器类的指南

我有一个用C++实现的红黑树。它支持STL映射的功能,树节点包含键和相应的映射值。我想为此编写一个迭代器类,但是我不知道该如何着手。我应该将其定义为树类的内部类吗?请问有什么写法指南和资源可以提供吗? 感谢您!

8得票1回答
红黑树:Kahrs 版本

我正在尝试理解Okasaki的红黑树实现以及Kahrs的删除方法(未类型化版本)。 在删除实现中,使用了一个名为app的函数,它似乎是在“合并”要删除的节点的子节点。而且,算法似乎仍然使用相同的方法“破坏”红-红属性而不是黑高度(如果我错了,请纠正我)。我们总是创建红色节点(即使我们打破了红...

8得票3回答
寻找C++区间树算法实现

我正在寻找一个高效的C++区间树实现(很可能是基于红黑树),没有病毒或限制性许可证。 有没有指向一个干净轻量级独立实现的指针? 对于我考虑的用例,区间集在开始时就已知(可能会有一百万),我希望能够快速获取与给定区间重叠的区间列表。 因此,一旦构建了树,它将不会更改--只需要快速查询。

8得票2回答
树图如何使用红黑树算法

我已经阅读了许多关于红黑树的文章,其中对操作需要O(log n)时间。我不是很清楚它是如何工作的,以及相比二叉搜索树,树映射如何使用红黑树算法来平衡树。 参考链接 https://www.topcoder.com/community/data-science/data-science-tut...

8得票2回答
有没有任何不使用红黑树的std::set实现?

有没有人看到过STL的实现,其中stl::set不是以红黑树实现的? 我之所以问这个问题,是因为在我的实验中,B树表现优于std::set(以及其他红黑树实现),具体取决于B值大小,速度提高了2到4倍。我很好奇是否有强制使用红黑树的充分理由,当似乎有更快的数据结构可用。

8得票5回答
JavaScript:需要一个不错的红黑树实现

我该在哪里找到可直接使用的数据结构?如果您知道任何好的“标准”数据结构集合,也请告诉我。

8得票2回答
插入后的红黑树结果是否唯一?

假设我有一棵二叉搜索树,最初满足所有红黑树条件,并包含某个集合S中的每个整数s的一个节点。接下来,我想要一个新的节点;比如说a(它不在S中)。 在重新平衡后,这种添加的结果是唯一的吗? 换句话说:插入一个节点后,是否只有一种方法来重新平衡红黑树? 我认为它们不是唯一的,尽管我没有证据(也...