Trait binary_tree::BinaryTree
[−]
[src]
pub trait BinaryTree: Sized { type Subtree: Sized + DerefMut<Target=Self>; fn detach_left(&mut self) -> Option<Self::Subtree>; fn detach_right(&mut self) -> Option<Self::Subtree>; fn insert_left(&mut self, tree: Option<Self::Subtree>) -> Option<Self::Subtree>; fn insert_right(&mut self, tree: Option<Self::Subtree>) -> Option<Self::Subtree>; fn rotate_left(this: Self::Subtree) -> Result<Self::Subtree, Self::Subtree> { ... } fn rotate_right(this: Self::Subtree) -> Result<Self::Subtree, Self::Subtree> { ... } }
Generic methods on binary trees. Calling any of these methods directly on a self-balancing binary tree can make it imbalanced.
Associated Types
Required Methods
fn detach_left(&mut self) -> Option<Self::Subtree>
Try to detach the left sub-tree
fn detach_right(&mut self) -> Option<Self::Subtree>
Try to detach the right sub-tree
fn insert_left(&mut self, tree: Option<Self::Subtree>) -> Option<Self::Subtree>
Replace the left subtree with tree and return the old one.
fn insert_right(&mut self, tree: Option<Self::Subtree>) -> Option<Self::Subtree>
Replace the right subtree with tree and return the old one.
Provided Methods
fn rotate_left(this: Self::Subtree) -> Result<Self::Subtree, Self::Subtree>
Consumes the tree, rotates it left if right subtree exists, otherwise returns the original with an error.
fn rotate_right(this: Self::Subtree) -> Result<Self::Subtree, Self::Subtree>
Consumes the tree, rotates it right if left subtree exists, otherwise returns the original with an error.