更新Scala中的节点值?

时间:2015-06-11 15:52:54

标签: algorithm scala tree binary-tree

我有这段代码

chdir

但是,如果我想更新节点的值呢?我尝试在case中做value = newValue,但似乎不允许。

我的树/节点的结构:

tree match {
            case EmptyNode => 
                //do stuff with empty node
            case Node(left, right, value) =>
                //do stuff with node contents 
}

2 个答案:

答案 0 :(得分:4)

您可以使用@表示法引用实际节点:

case n@Node(left, right, value) => n.value = "newValue"

答案 1 :(得分:1)

诺亚的答案确实显示了改变节点价值的方法,但你不应该这样做。 scala的主要思想之一是提升不可变数据结构,即一旦你定义了一个对象,你就不会改变它。

这在树中特别重要,因为通过更改节点的值,可能会使树不一致(节点左侧的值可能不再小)。相反,始终保持节点值不可变,并根据需要添加或删除节点,在删除节点时注意树的重新平衡。