18得票1回答
Scala范围/区间映射结构

我有一个和能够将一系列键映射到值的数据结构中提到的问题几乎相同,但是针对的是Scala。 也就是说,我想要一个可变的一维非重叠区间[a[i], b[i]),它将映射到某种值v[i]。用于执行这种工作的标准底层数据结构是红黑树。 我希望它具有以下操作,最好所有操作的复杂度都为O(log n)...

20得票6回答
哈希表与自平衡搜索树

我很好奇,有什么理由可以超越使用哈希表而使用自平衡树技术来存储项。 我知道哈希表无法维护插入顺序,但我总是可以在顶部使用链表来存储插入顺序序列。 我知道对于少量的值来说,哈希函数有额外的成本,但我总是可以将哈希函数与键一起保存以进行更快的查找。 我了解到,相对于直接实现红黑树,哈希表的实...

7得票2回答
为什么红黑树总是将 nil 节点作为它们的叶子节点,并且这意味着什么?

我不知道为什么我们需要在红黑树中将NIL节点作为叶子节点。能否有人解释它的目的?

7得票2回答
如何用Go语言实现红黑树的惯用方法?

我刚开始学习Go语言,并实现了一棵二叉搜索树。该树可以存储任何值(具体而言,是实现了interface{}接口的任何内容)。 我想在这个实现的基础上创建一个自平衡的红黑树。在面向对象的语言中,我会定义一个BinarySearchTree的子类,添加一个color数据成员,然后重写Insert...

21得票3回答
有人能清晰地解释一下删除左倾红黑树的过程吗?

我正在学习左倾红黑树,教授是罗伯特·塞奇威克 http://www.cs.princeton.edu/~rs/talks/LLRB/LLRB.pdf http://www.cs.princeton.edu/~rs/talks/LLRB/RedBlack.pdf 虽然我已经理解了2-3树和L...

8得票2回答
红黑树最坏情况下黑高度插入顺序问题

假设我们处理1-15的键。为了得到普通BST的最坏性能,您需要按以下方式按升序或降序插入键: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 然后BST基本上会变成链接列表。 对于BST的最佳情况,您将按以下顺序插入键,这些键被排列在一...

15得票2回答
在红黑树中,自顶向下的删除操作比自底向上的删除操作更快且空间利用率更高吗?

根据此页面 http://www.eternallyconfuzzled.com/tuts/datastructures/jsw_tut_rbtree.aspx,“自顶向下删除(Top-down deletion)”是红黑树节点删除的一种实现,通过将红色节点沿着树向下推送,使得要删除的叶子节点...

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

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

10得票1回答
性能: SortedDictionary vs SortedSet

我应该维护: 1.) 一个 SortedDictionary(double,struct) 2.) 还是只有一个普通的 Dictionary(double,struct) 加上一个 SortedSet(double)? 我只想要快速插入。我不关心检索,因为我不会进行太多查找。我需要排序的...

10得票4回答
Java中TreeSet操作的计算复杂度是多少?

我想澄清一些关于TreeSet某些操作中复杂度的问题。在javadoc中它说: "该实现提供了基本操作(add、remove和contains)保证的O(log n)时间复杂度." 目前为止还好。我的问题是在addAll()、removeAll()等操作时会发生什么。这里Set的j...