#tree #cursor #adt

xtree

A simple general purpose tree data structure

9 releases

0.1.8 Jan 4, 2021
0.1.7 Jan 4, 2021

#286 in Data structures

Download history 2/week @ 2021-07-02 1/week @ 2021-07-09 9/week @ 2021-07-16 18/week @ 2021-07-30 9/week @ 2021-08-06 18/week @ 2021-08-13 1/week @ 2021-08-27 1/week @ 2021-09-10 9/week @ 2021-10-01 9/week @ 2021-10-08

56 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

=_