#tree #adt #cursor #tree-structure

xtree

A simple general purpose tree data structure

9 releases

0.1.8 Jan 4, 2021
0.1.7 Jan 4, 2021

#1551 in Data structures

21 downloads per month

MIT license

20KB
398 lines

xtree

A simple rust general purpose tree data structure.

Homepage

crates.io

Documentions

docs.rs

Sources

github

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

No runtime deps