【发布时间】:2011-01-15 05:25:35
【问题描述】:
我需要找到一个可以通过以下操作执行的数据结构:
- 构建(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)
显而易见的首选是 RedBlackTree。
但是,我无法找到关于 O(Logn) 中的 Decrease-Upto 的解决方案。 如果 k 大于树中的最大键会发生什么 - 这种情况下我必须更新整个树。
有人可以提出其他建议吗?也许有一些提示?
【问题讨论】:
-
该方法应该减去
d是什么,应该从哪里做呢? oO -
d 是一个数字,k 是一个与节点键进行比较的数字,n 是节点数,即树。
-
很明显
d是一个数字,而不是小马;但是应该从哪里减去?来自密钥小于k的所有节点? -
是的,关键节点小于或等于 k
-
抱歉,我的问题不准确。您应该从键小于
k的那些节点的键 或它们的关联数据 中减去d?
标签: algorithm binary-tree red-black-tree