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

type Subtree: Sized + DerefMut<Target=Self>

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.

Implementors