c_cpp 数组是否代表堆

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 数组是否代表堆相关的知识,希望对你有一定的参考价值。

//https://www.geeksforgeeks.org/how-to-check-if-a-given-array-represents-a-binary-heap/
#include <iostream>
using namespace std;

bool isHeap (int a[],int i, int n) {
    int l= 2*i+1, r= 2*i+2;
    if (l<n && r<n) {
        if (a[i] > a[l] && a[i] > a[r] && isHeap(a, l, n) && isHeap (a, r,n))
            return 1;
        else
            return 0;
    }
    else if (l<n) {
        if (a[i] > a[l] && isHeap(a, l, n))
            return 1 ;
        else
            return 0;
    }
    return 1;
}

int main() {
    int t;
    cin>>t;
    while (t-->0) {
        int n;
        cin>>n;
        int a[n];
        for (int i=0;i<n;i++)
            cin>> a[i];

        cout<< isHeap(a,0, n) << "\n";
    }
}

以上是关于c_cpp 数组是否代表堆的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 检查给定数组是否可以表示BST的Preorder Traversal

实现堆结构

算法数组与矩阵问题——找到无序数组中最小的k个数

c_cpp 堆

c_cpp 堆

c_cpp 堆。空手。