我需要找到一个可以使用以下操作的数据结构:
- 构建(S,k) - O(nlogn)
- 搜索(S,k) - O(logn)
- 插入(S,k) - O(logn)
- 删除(S,k) - O(logn)
- Decrease-Upto(s,k,d) - O(logn) - 这个方法应该减去 d(d>0) 每个 <=k 的节点
显而易见的第一个选择是 RedBlackTree。
但是,我无法找到关于 O(Logn) 中的 Decrease-Upto 的解决方案。如果 k 大于树中的最大键会发生什么 - 这种情况下我必须更新整个树。
有人可以提出其他建议吗?也许一些提示?