2 个版本

0.1.2 2020年3月13日
0.1.1 2020年3月13日
0.1.0 2020年3月11日

#1338算法

Download history 81/week @ 2023-11-20 99/week @ 2023-11-27 117/week @ 2023-12-04 84/week @ 2023-12-11 241/week @ 2023-12-18 75/week @ 2023-12-25 88/week @ 2024-01-01 74/week @ 2024-01-08 146/week @ 2024-01-15 141/week @ 2024-01-22 256/week @ 2024-01-29 309/week @ 2024-02-05 295/week @ 2024-02-12 313/week @ 2024-02-19 226/week @ 2024-02-26 283/week @ 2024-03-04

1,138 每月下载量
用于 vmf_parser_nom

MIT 许可证

73KB
999

遍历

Build Status Latest Version Docs License

遍历实现了通用和懒加载的树遍历算法。

包含

通用

遍历使用 泛型(或 类型参数)以提高灵活性,并易于实现和融入现有架构。

惰性

惰性或 惰性评估指的是评估被延迟到需要时。

遍历延迟处理 Node 和获取子 Node 直至调用 Iterator::next。当调用 next 时,遍历仅处理此迭代所需的 Node

来自 Rust 的文档

迭代器(以及迭代器适配器)是惰性的。这意味着仅仅创建一个迭代器并不会做很多事情。直到你调用next方法之前,实际上并没有发生任何事情。

Iterator - 惰性

用法

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

[dependencies]
traversal = "0.1"

发布版本

发布说明可在仓库中的CHANGELOG.md文件找到。

算法

     A
    / \
   B   C
  / \ / \
 D  E F  G

给定上述树结构,以下列出的是每个单独的迭代器/遍历算法产生的顺序。

算法 顺序
Bft(广度优先遍历) A, B, C, D, E, F, G
DftPre(先序深度优先遍历) A, B, D, E, C, F, G
DftPost(后序深度优先遍历) D, E, B, F, G, C, A
DftPreRev(反向先序深度优先遍历) G, F, C, E, D, B, A
DftPostRev(反向后序深度优先遍历) A, C, G, F, B, E, D

请参阅每个单独算法的代码示例。

所有路径和最长路径

DftPathsDftLongestPaths是遍历树中所有路径和最长路径的实用工具。

给定与前面示例相同的树,DftPathsDftLongestPaths将产生以下路径。

DftPaths:

  • A, B
  • A, B, D
  • A, B, E
  • A, C
  • A, C, F
  • A, C, G

DftLongestPaths:

  • A, B, D
  • A, B, E
  • A, C, F
  • A, C, G

请参阅每个单独算法的代码示例。

  A <---+
 / \    |
B   D >-+
|   |   |
C   E >-+

DftCycles:

  • A -> D (意味着D与A连接
  • A -> D -> E

请参阅每个单独算法的代码示例。

无运行时依赖