判断是否是最小堆
算法思想:
判断以某节点为根的树是否为最小堆。
检查左右(存在的话)儿子值是否小于根,如果小于,返回false。
检查以左儿子为根的子树是否是最小堆,如果不是返回false。
检查以右儿子(存在的话)为根的子树是否是最小堆,如果不是返回false。
代码实现:
bool IsMinHeap(int A[],int k,int len) {
/* 检验以k为根节点的树是否是最小堆 */
if (k*2<=len) { /* 只检验非终端节点,以终端节点(叶子节点)为根的堆一定是最小
原创
2021-06-01 16:56:16 ·
1342 阅读 ·
0 评论