- Major interface-changes as proposed by Erik Domke.
- Removal of async tree
- Removal of public Rebuild-functionality (will be handled internally)
public interface IRangeTree<TKey, TValue>
: IEnumerable<RangeValuePair<TKey, TValue>>
{
IEnumerable<TValue> Values { get; }
int Count { get; }
IEnumerable<TValue> Query(TKey value);
IEnumerable<TValue> Query(TKey from, TKey to);
void Add(TKey from, TKey to, TValue value);
void Remove(TValue item);
void Remove(IEnumerable<TValue> items);
void Clear();
}
var tree = new RangeTree<int, string>()
{
{ 0, 10, "1" },
{ 20, 30, "2" },
{ 15, 17, "3" },
{ 25, 35, "4" },
};
// Add method:
tree.Add(0, 10, "1");
var results1 = tree.Query(5); // 1 item: [0 - 10]
var results2 = tree.Query(10); // 1 item: [0 - 10]
var results3 = tree.Query(29); // 2 items: [20 - 30], [25 - 35]
var results4 = tree.Query(5, 15); // 2 items: [0 - 10], [15 - 17]