1 个不稳定版本
0.1.0 | 2021年1月25日 |
---|
#2015 在 数据结构 中
29KB
477 行
二叉树 Dag (btree_dag)
此库通过单个二叉树映射(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