Adds an interval to the tree, if not already present. Completes in O(log n) time.
(self, interval)
| 312 | self.boundary_table[end] -= 1 |
| 313 | |
| 314 | def add(self, interval): |
| 315 | """ |
| 316 | Adds an interval to the tree, if not already present. |
| 317 | |
| 318 | Completes in O(log n) time. |
| 319 | """ |
| 320 | if interval in self: |
| 321 | return |
| 322 | |
| 323 | if interval.is_null(): |
| 324 | raise ValueError( |
| 325 | "IntervalTree: Null Interval objects not allowed in IntervalTree:" |
| 326 | " {0}".format(interval) |
| 327 | ) |
| 328 | |
| 329 | if not self.top_node: |
| 330 | self.top_node = Node.from_interval(interval) |
| 331 | else: |
| 332 | self.top_node = self.top_node.add(interval) |
| 333 | self.all_intervals.add(interval) |
| 334 | self._add_boundaries(interval) |
| 335 | append = add |
| 336 | |
| 337 | def addi(self, begin, end, data=None): |