快速功能性顺序收集

时间:2013-07-12 15:04:57

标签: list data-structures collections

我正在寻找一个顺序收集数据结构(即可以被视为列表的东西):

  1. 基本拼接操作(在列表中的任何位置添加或删除元素)分摊O(log N)或更好(因此数组不符合条件,因为它最快只能在最后添加或删除元素)。

  2. 即使在功能上使用也是如此,即操作是非破坏性的(因此双重链接列表不符合条件,因为对于非破坏性操作,您必须复制整个列表;绳索也是如此;来自我能看到的。)

  3. 是否有符合这些标准的数据结构?

1 个答案:

答案 0 :(得分:1)

是的,你想要一个平衡的二叉树。它们具有纯粹的功能性风格,不仅适用于分类地图,也适用于序列。

所需的适应是将序列索引映射到值。为避免在序列中间操作上进行昂贵的重新编号,请不要直接表示密钥;相反,让每个节点存储其左子树中的节点总数。在向下遍历期间,只要遍历正确,就通过添加计数来维护当前节点的索引。