pub struct LLRB<'a, V: Payload> { /* private fields */ }
Expand description
A Left Leaning Red-Black tree which supports random access O(log n) and get max O(1) https://tjkendev.github.io/bst-visualization/red-black-tree/left-leaning.html This does not properly handle equal key values like the regular RBTree because this does top-down deletions and does not branch when it finds an equal key, just stops there.
Implementations§
Trait Implementations§
source§impl<'a, V: Payload> GetRedBlackTreeData<'a> for LLRB<'a, V>
impl<'a, V: Payload> GetRedBlackTreeData<'a> for LLRB<'a, V>
source§impl<'a, V: Payload> GetRedBlackTreeReadOnlyData<'a> for LLRB<'a, V>
impl<'a, V: Payload> GetRedBlackTreeReadOnlyData<'a> for LLRB<'a, V>
Auto Trait Implementations§
impl<'a, V> Freeze for LLRB<'a, V>
impl<'a, V> RefUnwindSafe for LLRB<'a, V>where
V: RefUnwindSafe,
impl<'a, V> Send for LLRB<'a, V>where
V: Sync,
impl<'a, V> Sync for LLRB<'a, V>where
V: Sync,
impl<'a, V> Unpin for LLRB<'a, V>
impl<'a, V> !UnwindSafe for LLRB<'a, V>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<'a, T> HyperTreeReadOperations<'a> for Twhere
T: GetRedBlackTreeReadOnlyData<'a>,
impl<'a, T> HyperTreeReadOperations<'a> for Twhere
T: GetRedBlackTreeReadOnlyData<'a>,
source§fn lookup_index<V>(&'a self, value: &V) -> u32where
V: Payload,
fn lookup_index<V>(&'a self, value: &V) -> u32where
V: Payload,
Lookup the index of a given value.
source§fn get_max_index(&self) -> u32
fn get_max_index(&self) -> u32
Get the max index. If a tree set this to NIL on a non-empty tree, this will always be NIL.
source§fn get_root_index(&self) -> u32
fn get_root_index(&self) -> u32
Get the current root index.
source§fn get_next_lower_index<V>(&'a self, index: u32) -> u32where
V: Payload,
fn get_next_lower_index<V>(&'a self, index: u32) -> u32where
V: Payload,
Get the previous index. This walks the tree, so does not care about equal keys.
source§fn get_next_higher_index<V>(&'a self, index: u32) -> u32where
V: Payload,
fn get_next_higher_index<V>(&'a self, index: u32) -> u32where
V: Payload,
Get the next index. This walks the tree, so does not care about equal keys. Used to swap an internal node with the next leaf, when insert or delete points at an internal node. It should never be called on leaf nodes.