首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >确定数组[1...n]是否为最大堆

确定数组[1...n]是否为最大堆
EN

Stack Overflow用户
提问于 2020-03-27 03:54:17
回答 1查看 64关注 0票数 1

我试图搜索一种算法来确定一个数组是否是一个最大堆,并遇到了这段代码。这段代码是否适用于arr1...n数组?arri >= arr2*i +2中的(2*i+2)代表什么?根据我的理解,max-heap的左子元素应该返回2*i,而不是2*i+2

代码语言:javascript
运行
复制
/ Returns true if arr[i..n-1] represents a 
// max-heap 
bool isHeap(int arr[], int i, int n) 
{ 
// If a leaf node 
if (i > (n - 2)/2) 
    return true; 

// If an internal node and is greater than its children, and 
// same is recursively true for the children 
if (arr[i] >= arr[2*i + 1] && arr[i] >= arr[2*i + 2] && 
    isHeap(arr, 2*i + 1, n) && isHeap(arr, 2*i + 2, n)) 
    return true; 

return false; 
} 
EN

回答 1

Stack Overflow用户

发布于 2020-03-27 04:02:44

对于基于0的数组,i的子项是2i+12i+2 (0的子项是1和2;1的子项是3和4;依此类推)

对于基于1的数组,子项是2i2i+1 (1的子项是2和3;2的子项是3和4;依此类推)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60875149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档