我最近在 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。