我有一个大(> 百万个元素)树,每个元素都有一个“偏移”字段,它引用外部的东西。我需要做这两个:
- 在任意位置插入新元素。每次插入都会导致后面元素的“偏移”字段增加一些量。
- 快速获取元素的偏移值。
如果 2 不是必需的,我会存储相对于前一个的偏移量,那么插入后就不需要更新所有内容。但这意味着我需要将每个先前的偏移量相加来计算一个元素的绝对值。
有没有做这种事情的规范方法?我在想也许是一种折衷方案,例如,每个第 n 个元素都有一个绝对偏移量,而其他元素的偏移量将相对于前一个绝对偏移量,这意味着在这两种情况下我都必须进行少量遍历。