我记得学过一种数据结构,将一组整数作为范围存储在树中,但是已经 10 年了,我不记得数据结构的名称,而且我对细节有点模糊。如果有帮助,它是 CMU 教授的一种函数式数据结构,我相信 2002 年的 15-212(编程原理)。
基本上,我想存储一组整数,其中大部分是连续的。我希望能够有效地查询集合成员资格,有效地添加整数范围,并有效地删除整数范围。特别是,我不在乎保留原始范围。如果将相邻的范围合并为一个更大的范围,那就更好了。
一个简单的实现是简单地使用一个通用的集合数据结构,例如 HashSet 或 TreeSet,并在添加范围时添加范围中的所有整数,或者在删除范围时删除范围中的所有整数。但是当然,除了使添加和删除速度变慢之外,这还会浪费大量内存。
我正在考虑一个纯粹的函数式数据结构,但就我目前的使用而言,我不需要它。IIRC、查找、插入和删除都是 O(log N),其中 N 是集合中的范围数。
那么,你能告诉我我想记住的数据结构的名称,还是一个合适的替代方案?