【发布时间】:2015-05-25 11:42:50
【问题描述】:
我有一些关于扩充数据结构的问题:
令 S = {k1, . . . , kn} 是一组数字。设计一个高效的 S 的数据结构,支持以下两种操作:
Insert(S, k) 插入 将 k 放入 S(您可以假设 k 尚未包含在 S 中),以及 TotalGreater(S, a) 它返回所有大于 a 的键 ki ∈ S 的总和,即 P ki∈S, ki>a ki 。
争论两个操作的运行时间并给出 TotalGreater(S, a) 的伪代码(不要给出 Insert(S, k) 的伪代码)。
我不明白该怎么做,我想在 RB 树中添加一个名为 sum 的额外字段,但它不起作用,因为有时我只需要左节点的总和,有时我也需要正确节点的总和。
所以我想添加 2 个字段,称为 leftSum 和 rightSum,如果当前节点是 > GivenValue,则将子节点总和的缓存值添加到当前总和值。
有人可以帮我解决这个问题吗?
【问题讨论】:
标签: algorithm data-structures tree red-black-tree