我正在尝试实现一种算法,以在 O(1) 时间内找到具有 n 个不同元素的 Max-Heap 的第 10 个最大元素。
我试图绘制它并使用堆属性,但随着我深入堆,它变得越来越复杂。这是我制作的草稿,也是我坚持的地方——从我们有不同的元素和堆属性的事实来看,我们知道父级总是大于其子级。因此,根是最大元素。下一个最大元素是根的儿子之间的较大元素。
编辑:我还考虑过将较大的儿子与另一位父母的儿子进行比较。如果其中至少一个大于另一个父级,则通过堆属性,我们从最大的儿子继续并继续这样做直到我们有 10 个元素,但这并不总是正确的,因为随着我们深入,可能没有元素,现在我们需要从头再来。
任何解释甚至伪代码都会非常受欢迎。
提前致谢!