#tagged #tree #tree-structure #values #tree-like #depth

tagged-tree

一种类似于树的数据结构,其值被标记

4个版本 (破坏性)

0.4.0 2021年9月30日
0.3.0 2021年9月26日
0.2.0 2021年9月25日
0.1.0 2021年9月25日

1825 in 数据结构

MIT 许可证

23KB
634

标记树

此crate提供了一种简单的树结构,其中所有节点(根节点除外)都被任意类型标记。

示例

use tagged_tree::Tree;

fn main() {
    // create the tree with the root node
    let mut tree = Tree::<&'static str, i32>::new(42);
    assert_eq!(*tree.value(), 42);

    // add the value 1 tagged with "hello"
    let (old_val, child) = tree.add_child("hello", 1);
    assert!(old_val.is_none());
    assert_eq!(*child.value(), 1);

    // replace it with 5
    let (old_val, child) = tree.add_child("hello", 5);
    assert_eq!(old_val.unwrap(), 1);
    assert_eq!(*child.value(), 5);

    // add a child to the child
    child.add_child("world", 2);

    // add another child to the original
    tree.add_child("greetings", 3);

    // iterate over the direct children
    for (key, child) in tree.iter_single() {
        println!("{}: {}", key, child.value());
    }

    // depth first traversal
    for (key, value) in tree.iter_depth_first() {
        println!("{}: {}", key, value);
    }

    // breadth first traversal
    for (key, value) in tree.iter_breadth_first() {
        println!("{}: {}", key, value);
    }
}

依赖项

~165KB