在亚历克斯·塔格特下面的评论之后编辑。
我正在使用拉链轻松遍历和编辑可以增长到数千个节点的树。每个节点在第一次创建时都是不完整的。数据将一直在随机位置添加/删除,叶节点将被分支替换,等等。
树可能非常不平衡。对节点的快速随机访问也很重要。
一种实现是使用 zipper 遍历树并创建由键索引的节点的哈希表。不用说上面的效率很低,因为:
- 每个节点需要创建2个副本
- 任何更改都需要在 2 个数据结构(树和哈希图)之间一致地镜像。
简而言之,是否有一种时间/空间有效的方法来结合使用拉链的轻松遍历/更新和 clojure 中哈希表的快速访问?