查找与点不重叠的所有间隔

时间:2015-07-23 19:17:20

标签: algorithm computational-geometry

我有(a1, b1), (a2, b2), ...., (an, bn)形式的间隔 我想支持以下操作

  1. 添加新的间隔。
  2. 删除现有间隔。
  3. 给定一个点,找到与该点不重叠的所有间隔。
  4. 如果我们想要找到与该点重叠的区间,则间隔树是直接的解决方案。当我们想要找到不相交的区间时,情况怎么样?

1 个答案:

答案 0 :(得分:3)

同时拥有两棵树中的所有节点。树A按键ai保存它们,树B按键bi保存它们 插入和删除显然是O(log n) 对于要求3,将B中的节点从最小值打印到最大值,并在bi仍小于该点时停止。在A中相同但向后,

例:
给定(1,10), (5,18), (13,20),点12 A ai大于12的区间是(13,20),B中的区间是(1,10)