Trait compt::Visitor

source ·
pub trait Visitor: Sized {
    type Item;
    type NonLeafItem;

    fn next(self) -> (Self::Item, Option<(Self::NonLeafItem, Self, Self)>);

    fn level_remaining_hint(&self) -> (usize, Option<usize>) { ... }
    fn with_depth(self, start_depth: Depth) -> LevelIter<Self> { ... }
    fn zip<F: Visitor>(self, f: F) -> Zip<Self, F> { ... }
    fn map<B, E, F: Fn(Self::Item, Option<Self::NonLeafItem>) -> (B, Option<E>)>(
        self,
        func: F
    ) -> Map<Self, F> { ... } fn bfs_iter(self) -> BfsIter<Self> { ... } fn dfs_preorder_iter(self) -> DfsPreOrderIter<Self> { ... } fn dfs_inorder_iter(self) -> DfsInOrderIter<Self> { ... } fn dfs_preorder(
        self,
        func: impl FnMut(Self::Item, Option<Self::NonLeafItem>)
    ) { ... } fn dfs_inorder(self, func: impl FnMut(Self::Item, Option<Self::NonLeafItem>)) { ... } }
Expand description

The trait this crate revoles around. A complete binary tree visitor.

Required Associated Types§

The common item produced for both leafs and non leafs.

A NonLeafItem item can be returned for non leafs.

Required Methods§

Consume this visitor, and produce the element it was pointing to along with it’s children visitors.

Provided Methods§

Return the levels remaining including the one that will be produced by consuming this iterator. So if you first made this object from the root for a tree of size 5, it should return 5. Think of is as height-depth. This is used to make good allocations when doing dfs and bfs. Defaults to (0,None)

Iterator Adapter to also produce the depth each iteration.

Combine two tree visitors.

Map iterator adapter

Provides an iterator that returns each element in bfs order.

Provides a dfs preorder iterator. Unlike the callback version, This one relies on dynamic allocation for its stack.

Calls the closure in dfs preorder (root,left,right). Takes advantage of the callstack to do dfs.

Calls the closure in dfs preorder (left,right,root). Takes advantage of the callstack to do dfs.

Implementors§