具有相同元素的 Max 和 Min 堆

Max and Min heap with the same elements

考虑以下示例。我将随机数添加到最小堆,同时我将相同的数字以相同的顺序添加到最大堆。所以最后这 2 个堆将具有相同的数字,不同的是第一个是最小堆,第二个是最大堆。

下面是问题:

如果我决定从最大堆中删除最大元素,那么最大堆中的最大元素是否总是位于最小堆的底部?如果不是,那么另一个问题是,如果我想从最小堆中删除最大元素,并将他与最小堆的最后一个元素交换,删除最后一个元素,我是否需要 运行 操作,这将不得不将该切换元素与他的 child 进行比较以修复最小堆?还是总是将它与 parent 进行比较以修复最小堆?

根据最大堆的定义,根总是大于它的 children。然而 children 之间没有特定的顺序,所以左 child 并不总是大于右,反之亦然。最大堆的最大元素,即根,必须位于最小堆的叶子上。我们不知道是哪个叶子,这将取决于元素的配置。 (即插入这些元素的顺序,因为通常插入元素是从树的最左边到最右边填充)