我最近在 Software Engineering Radio 上收听了Rich Hickey 的采访。在采访中,Rich 提到 Clojure 的集合被实现为树。我希望用另一种语言实现持久数据结构,并想了解集合和 Clojure 的其他持久数据结构是如何实现的。
在以下场景中,树在每个点会是什么样子?
创建集合
{1 2 3}
创建和的
{1 2 3}
联合{4}
创造和的
{1 2 3 4}
差异{1}
我想了解生成的三组({1 2 3}
、{1 2 3 4}
和{2 3 4}
)如何共享结构,以及如何处理“删除”。
我还想知道一个节点可能拥有的最大分支数。Rich 在采访中提到,树木很浅,所以推测分支因子大于 2。