[][src]Crate xtree

XTree

XTree is a general purpose tree data structure.

Construct a tree

extern crate xtree;
use xtree::*;
let tree =
    tr!(1)
        / (tr!(2)
            / tr!(3)
            / tr!(4))
        / tr!(5);

It will construct a tree like below

//      1
//     / \
//   2    5
//  / \
// 3   4

Depth-First iterate a tree

for value in tree.df_iter(){
    print!("{} ",value);
}

It will print 1 2 3 4 5 in console.

Breadth-First iterate a tree and Change the value

for value in tree.bf_iter_mut(){
    *value += 1;
    print!("{} ",value);
}

It will print 2 3 6 4 5 in console.

Freely visit node with Cursor

let mut cursor = tree.cursor();

create a read-only cursor to root node.

cursor.move_child(0);

move this cursor to the first child node.

println!("{}",cursor.current());

get the value of which it pointing now.
it will print 2 in console.

Advanced usage

More exmples

Macros

tr

A useful macro is used to build a tree

Structs

BfDepthIter

The immutable Breadth-First Iterator with Depth information.

BfDepthIterMut

The mutable Breadth-First Iterator with Depth information.

BfIter

The immutable Breadth-First Iterator.

BfIterMut

The mutable Breadth-First Iterator.

Cursor

A immutable Cursor can freely visit node in tree

CursorMut

A mutable Cursor can freely visit node in tree

DfDepthIter

The immutable Depth-First Iterator with Depth information.

DfDepthIterMut

The mutable Breadth-First Iterator with Depth information.

DfIter

The immutable Depth-First Iterator.

DfIterMut

The mutable Depth-First Iterator.

Tree

The type representing a Tree