1 个不稳定版本

0.1.0 2021年1月25日

#2015数据结构

MIT/Apache

29KB
477

二叉树 Dag (btree_dag)

CodeBuild Version badge Docs badge

此库通过单个二叉树映射(BTreeMap)实现有向无环图(抽象数据结构)的简化实现。这种实现通常被称为邻接表。

此实现的主要目标是尽可能简洁并符合 Rust 语言的风格。当使用默认功能编译时,alloc crate 是唯一的依赖项,并且不是可选的。正如人们所假设的,alloc 是必需的,因为实现依赖于 BTreeMap(以及 BTreeSet 包装器)。

示例

use crate::BTreeDag;

fn main() {
    let mut dag: BTreeDag<String> = BTreeDag::new();
    // Add nodes.
    dag.add_vertex(String::from("Tarzan"));
    dag.add_vertex(String::from("Jane"));
    // Add a relationship.
    dag.add_edge(String::from("Tarzan"), String::from("Jane"));
    
    // Assert relationship now exists.
    assert!(dag.adjacdent(String::from("Tarzan"), String::from("Jane")));
    
    // Adding a bidirectional edge is not allowed.
    assert!(dag.add_edge(String::from("Jane"), String::from("Tarzan"))?.is_err());
}

使用方法

将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
btree_dag = "0.1.0"

API

请参阅 API 以获取可用方法的完整列表。

许可

此作品在 MIT 或 Apache-2.0 许可下双授权。

依赖项

~0–530KB
~11K SLoC