|
1
2
第六大元素可以是
很
更远的地方。极端的情况是,前六个元素是根元素和一系列正确的子元素。每个子节点都位于节点
最早的位置是,如果相同的值恰好是根的左子级,而其他所有值都是右分支:它出现在位置2。同样,根据需要显示较小的值。 所以 范围 可能值的范围为2到2^n-1。 剩下的问题是确定剩下的哪个位置可以包含第六大元素。
画一棵适当深度的树——更好的是,只画4层深的树,并使用第四大元素。例如,使用99、98、98、96,然后“其他”值可以是1到11。这棵树上有什么地方可以放
将树再展开一级。
现在
你不能放进去的洞在哪里
这能让你摆脱困境吗? |
|
|
2
2
n个项目的堆的高度(称为h)为log 2. (n) ,向上取整。假设有一个完整的最小堆,第k个项目几乎可以在任何地方,但要受到以下限制。
考虑7个级别的完整堆。堆本身有127个节点。第二级的每个节点都是63个节点的完整堆。因此,第二级的每个项目都必须有62个较小的值。第96个最小的项目不可能位于第二级,因为没有62个更大的值来填充其树。 这些规则可以帮助您支持顺序搜索,但它并没有给您带来很多好处。在7级堆中,第96个最小的项可以高达3级,也可以低至7级。节点只能处于三个位置。 如果您使用的是最大堆,请将上面的“最小”更改为“最大” |
|
|
NOBUD · 最大堆插入函数实现C++ 3 年前 |
|
|
JimBelushi2 · 合并排序创建内存堆 7 年前 |
|
|
Arda İbrahim Gökçe · 在遍历最小堆时获取垃圾值 7 年前 |
|
|
Alexy Grabov · 查找最大堆中k个最大元素的位置 7 年前 |
|
|
Maxxx · 使用堆在O(N log K)时间内查找前K个元素 7 年前 |
|
|
Karthik · 限制Go堆接口实现的优先级队列的大小 7 年前 |
|
|
mourinho · 使用数组实现最小堆[关闭] 7 年前 |