我将尝试创建一些基于AVL树的排名树,具有特殊要求。假设我有AVL树和节点,每个节点有2个字段:
id, priority
我的AVL树按照id排序,同时我有一个函数:
foo(currentId, delta)
降低所有 ID 的优先级,即小于或等于 currentId 的所有 ID 优先级下降 delta。该函数需要以 O(log n) 的复杂度工作。因此,我的问题是:我需要存储哪些额外信息才能在任何阶段使用 foo 后,在 O(1) 的复杂度下弹出具有最高优先级的节点(after using foo also!)。
P.S. 我尝试过在右子树和左子树中存储有关最大优先级的信息,但是在使用 foo 后需要进行很多更改。这将需要超过仅 O(log n) 的时间。提前感谢任何关于树的好主意或好书。
foo()
吗?相对于id
,你使用了哪些delta
值?一个详细的示例将有助于我们理解你在这里尝试实现什么。 - moinudin