interval_tree library

The library provides a non-overlapping interval tree implementation with support for calculating unions, intersections, and differences between individual intervals and entire trees.

Usage

Import the library:

import 'package:interval_tree/interval_tree.dart';

Construct a tree:

final IntervalTree tree = IntervalTree.from([[1, 3], [5, 8], [10, 15]]);

Add an interval:

tree.add([2, 6]);
print(tree); // IntervalTree([1, 8], [10, 15])

Remove an interval:

tree.remove([12, 16]);
print(tree); // IntervalTree([1, 8], [10, 12])

Calculate union/intersection/difference:

final IntervalTree other = IntervalTree.from([[0, 2], [5, 7] ]);

print(tree.union(other)); // IntervalTree([0, 8], [10, 12])
print(tree.intersection(other)); // IntervalTree([1, 2], [5, 7])
print(tree.difference(other)); // IntervalTree([2, 5], [7, 8], [10, 12])

Classes

Interval
An interval between two points, start and end.
IntervalTree
A non-overlapping collection of intervals organized into a tree.