Order-statistic B-tree with O(log n) position-indexed operations
moon add dowdiness/order-tree// Build from array
let tree = @order_tree.OrderTree::from_array(["a", "b", "c", "d"])
// Positional access
tree[0] //=> Some("a")
tree[2] //=> Some("c")
// Range view
tree[1:3] //=> ["b", "c"]
// Insert and delete
tree.insert_at(2, "x") // ["a", "b", "x", "c", "d"]
tree.delete_at(0) //=> Some("a"), tree is ["b", "x", "c", "d"]
// Range delete
tree.delete_range(1, 3) // ["b", "d"]| Method | Description | Complexity |
|---|---|---|
| OrderTree::new(min_degree?) | Create empty tree | O(1) |
| OrderTree::from_array(items, min_degree?) | Bulk build from array | O(n) |
| get_at(pos) / tree[pos] | Element at position | O(log n) |
| find(pos) | Element + offset within element | O(log n) |
| insert_at(pos, elem) | Insert element at position | O(log n) |
| delete_at(pos) | Delete element at position | O(log n) |
| delete_range(start, end) | Delete span range [start, end) | O(log n)* |
| set_at(pos, elem) / tree[pos] = elem | Replace element | O(log n) |
| view(start?, end?) / tree[start:end] | Slice elements in range | O(k + log n) |
| iter() | Lazy iterator over all elements | O(n) total |
| span() | Total span | O(1) |
| size() | Number of RLE runs (≤ logical length when adjacent items merge) | O(1) |
| Need | Use |
|---|---|
| Insert/delete by position | OrderTree — insert_at, delete_at |
| Bulk construction from array | OrderTree — from_array (O(n) bottom-up) |
| Operator syntax (tree[i], tree[i:j]) | OrderTree — has #alias overloads |
| Custom splice logic (split/merge neighbors) | BTree — mutate_for_insert/delete callbacks |
| Embedding in another data structure | BTree — OrderTree is a thin wrapper |
dowdiness/rle Element traits (Spanning, Mergeable, Sliceable)
↑
dowdiness/btree Counted B+ tree engine
↑ - Navigation by span position (not keys)
| - All data in leaves, internal nodes are navigational
| - Automatic RLE merge of adjacent leaves
|
dowdiness/order-tree High-level sequence API (this library)
- insert_at, delete_at, from_array
- Operator overloads
- Used by the CRDT layer (event-graph-walker)Install
Download zipOrder-statistic B-tree with O(log n) position-indexed operations