gpt4 book ai didi

c++ - 具有相同元素的 Max 和 Min 堆

转载 作者:搜寻专家 更新时间:2023-10-31 01:33:55 25 4
gpt4 key购买 nike

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

现在的问题是:

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

最佳答案

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

关于c++ - 具有相同元素的 Max 和 Min 堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40463852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com