treez

A collection of useful data structures

segment tree

implementation: array based

todo: generic type

notes: for static use after initialization

```rust

let mut segments = vec![]; for i in 0..10 { let n = (i5, 5i+5, i); //(leftbound,rightbound,segment_id); inclusive bounds segments.push( n ); }

let t : treez::seg::TreeSeg = treez::seg::TreeSeg::init( segments.asslice() ); let querysegs: HashSet<_> = t.getsegsfrom_bound( (15,20) ).iter().cloned().collect();

let check: HashSet<_> = [ 2, 3, 4 ].iter().cloned().collect(); println!( "query segs: {:?}", querysegs ); assert!( check.intersection(&querysegs).count() == check.len() );

```

red black tree

implementation: array based, threshold compaction, minimal heap allocation

todo: optimize internal representation and operations, generic type

notes: comparable performance to BTreeMap

```rust

let mut t = treez::rb::TreeRb::new(); for i in 0..nums.len() { let r = nums[i]; t.insert( r, i as isize ); }

for i in 0..nums.len() { let r = nums[i]; let v = t.remove( &r ).expect( "remove unsuccessful" ); }

```