Data structures van Emde Boas树的最大元素是否应存储在树外?

Data structures van Emde Boas树的最大元素是否应存储在树外?,data-structures,van-emde-boas-trees,Data Structures,Van Emde Boas Trees,我们不需要像对待最小元素一样对待最大元素吗?为什么我们可以有这种不对称性,并且仍然在0(logn)时间内执行操作?max元素沿树向下传播,但min元素不。。。在相反的情况下,是否有时间进行操作 我在这里发现:我们需要存储它,因为元素的sqrt是耗时的操作。但我认为还有其他原因。van Emde Boas树通常会分别存储最大值和最小值,因为否则您无法有效地实现后续值和前置值 你所看到的具体消息来源是否有其他建议?我看到的所有关于vEB树的注释都描述了以这种方式存储最大值和最小值。看 , 希

我们不需要像对待最小元素一样对待最大元素吗?为什么我们可以有这种不对称性,并且仍然在0(logn)时间内执行操作?max元素沿树向下传播,但min元素不。。。在相反的情况下,是否有时间进行操作


我在这里发现:我们需要存储它,因为元素的sqrt是耗时的操作。但我认为还有其他原因。

van Emde Boas树通常会分别存储最大值和最小值,因为否则您无法有效地实现后续值和前置值

你所看到的具体消息来源是否有其他建议?我看到的所有关于vEB树的注释都描述了以这种方式存储最大值和最小值。看

  • ,

希望这有帮助

我认为op要问的是,为什么我们不存储与最小元素类似的最大元素,即为什么我们要将最大元素传播到树中,以及这种处理方式是否可以逆转

我们将min元素存储在树的外部,因为它的存在表明特定的结构是非空的,这阻止我们进行不必要的递归调用来检查空性,并使插入空树成为一个O(1)操作,即只设置最小元素。对于后续操作和前置操作,我们需要树外的max和min元素

Erik Demaine的课堂讲稿(templatetypedef提供的链接)对此进行了很好的解释

我相信应该可以在不传播的情况下将min/max元素保持在外部,并且仍然保持每次操作的O(log u)时间,因为我们这样做只是为了知道结构是否为非空。保留这两种方式,而不是同时传播这两种方式是多余的,不会为你赢得额外的时间