【发布时间】:2013-09-04 19:07:12
【问题描述】:
我正在使用 Erlang 中的二叉树实现。下面是一段代码给你一个思路:
-record(node, {key, value, left, right}).
% ...
insert(Tree, {Key, Value}) when Key == Tree#node.key ->
#node{key=Key,
value=Value,
left=Tree#node.left,
right=Tree#node.right};
insert(Tree, {Key, Value}) when Key > Tree#node.key ->
Tree#node{right=insert(
Tree#node.right, {Key, Value})};
% ...
在这里,当我向树中插入一个新的键和值时,我返回一个带有插入(或修改)节点的新树。
问题: VM 是否会复制树并 GC 旧的(效率低下),或者复制对旧分支的引用并仅更改节点/受新密钥影响的分支?
相关:
【问题讨论】:
标签: erlang