3 个版本

0.1.2 2020 年 10 月 1 日
0.1.1 2020 年 8 月 26 日
0.1.0 2020 年 8 月 25 日

#1694数据结构

MIT 许可证

72KB
1.5K SLoC

treers

Sedgewick 树图,简单实现

Travis Status Version GitHub Issues GitHub Pull Requests Downloads License GitHub last commit Twitter

关于

这是一个业余项目,用 Rust 简单重写了 Sedgewick 的树结构。

贡献

请贡献,欢迎提交问题,还有很多东西可以改进(如文档改进)。

树图

接口 特性

  • SedgewickMap
名称 描述
new 创建新的树图实例
size 图中的元素数量
get 通过键获取图中的值
put 通过键值对插入
height 树高度
is_empty 检查图是否为空
contains 如果项目存在,返回 true
min 检索图中的最小键
max 检索图中的最大键
delete 待办事项
  • 树遍历
名称 描述
pre_order 前序遍历DFS
in_order 中序遍历DFS
post_order 后序遍历DFS
level_order 层序遍历BFS

BST - 二叉搜索树

  • 非常慢(请查看基准测试)
  • 有树遍历实现
算法 平均 最坏情况
空间 O(n) O(n)
搜索 O(log n) O(n)
插入 O(log n) O(n)

红黑树

  • 比标准平衡树实现慢 3 倍(请查看基准测试)
  • 有树遍历实现
  • 基本规则
  • 每个节点只能是红色或黑色
  • 根节点必须是黑色
  • 红色节点向左倾斜
  • 从根到空链接的每条路径都具有相同数量的黑色链接
算法 平均 最坏情况
空间 O(n) O(n)
搜索 O(log n) O(log n)
插入 O(log n) O(log n)

BTree - 平衡树

  • 非常慢(请查看基准测试)
  • 没有实现树遍历
  • 在数据库和文件系统中应用广泛
  • 注意:我已经在官方algs4中修复了一个循环(内存)错误
算法 平均 最坏情况
空间 O(n) O(n)
搜索 O(log n) O(log n)
插入 O(log n) O(log n)

文档

https://docs.rs/treers

待办事项

  • 对文档和README进行更多工作
  • BTree,使用栈内存存储条目
  • 用迭代器替换树遍历
  • 实现树剩余的方法
  • 使红黑树变得非常快

资源

作者

许可

MIT许可下授权。

无运行时依赖