绳索数据结构权重是节点中的字符加上左子树的权重还是左右子树的权重?

时间:2012-09-23 23:01:24

标签: string algorithm data-structures ropes

维基百科entry说:

每个节点的“权重”等于其字符串的长度加上其左子树中所有权重的总和。因此,具有两个子节点的节点将整个字符串分成两部分:左子树存储字符串的第一部分。右子树存储第二部分,其权重是两部分的总和。

我有点困惑,首先说节点权重是其字符串的长度加上其左子树中所有权重的总和。然后它说如果节点有两个子节点(因此左边和右边的子树),那么权重是两个部分的总和,而不仅仅是左子树。看图是有道理的(直接在22下面的9是9而不是更大,因为7的右子/子树对重量没有贡献)但是短语似乎对我不利或者我误解了什么?

1 个答案:

答案 0 :(得分:1)

是的,措词已经结束了。 “权重”是分区点,因此它只包含左子字符串(或包含的字符串,如果这是您所拥有的字符串)。

您不需要存储节点的总长度,但修改绳索需要通知所有父节点更改(应该是O(log n),这样就可以了。)