我们不需要像min元素一样处理max元素吗?为什么我们可以拥有这种不对称性并仍然在0(loglogN)时间内执行操作?最大元素沿树向下传播,但最小值不会......反转情况是否有可能有时间进行操作?
我在这里找到:http://code.google.com/p/libveb/wiki/Intro我们需要存储它,因为元素的sqrt是耗时的操作。但我认为还有别的东西。
答案 0 :(得分:3)
我认为op所要求的是为什么我们不存储类似于min元素的max元素,即为什么我们将max元素向下传播到树中以及这种处理是否可以反转。
我们将min元素存储在树外,因为它的存在表明该特定结构是非空的,这阻止我们进行不必要的递归调用以检查空白并使O(1)操作插入空树,即只需设置最小元素。我们需要树外的max和min元素用于后继和前任操作。
在Erik Demaine的讲义(由templatetypedef提供的链接)中对此进行了相当好的解释。
我认为应该可以将min / max元素中的任何一个保留在外而不进行传播,并且仍然保持每个操作的O(log log u)时间,因为我们这样做只是为了知道结构是否为非空。保持它们并且不将它们两者传播都是多余的,并且不会给你带来额外的时间。
答案 1 :(得分:1)
您看到的具体来源是否有其他原因?我见过的关于vEB树的所有注释都描述了以这种方式存储最大值和最小值。参见
希望这有帮助!