我最近听了Rich Hickey's interview on Software Engineering Radio。在采访中,Rich提到Clojure的收藏被实现为树木。我希望以另一种语言实现持久化数据结构,并希望了解集合和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。
分支因子是32. – 2013-04-29 04:32:46
迂腐笔记:我只是在http://www.youtube.com/watch?v=sp2Zv7KFQQ0听取Rich Hickey _Clojure数据结构2_。不确定在何时何地记录。集合具有不同的存储实现。 (默认?)向量是浅层树。其他集合可能有其他实现。 – 2013-04-29 19:56:13
他们这样做。具体来说:哈希集,哈希映射和向量每个节点有32个子节点;排序集和排序图是红黑树,每个节点有2个孩子。 – Chouser 2013-05-04 14:39:10