bool isMinHeap(int A[],int size)
{
for(int i=1; i<=size; i++)
{
if((A[i]<=A[2i]) && (A[i]<=A[2i+1]))
t=1;
else
{
t=0;
break;
}
}
if(t==1)
return true;
else return false;
}
我在搜索堆棧溢出這個問題。但編碼很難被我理解爲有人使用遞歸過程。我必須在C++中創建一個FUNCTION來檢查數組A是否是Min Heap?如果是最小堆則返回true,否則返回false
我在Min Heap中知道每個父節點都小於或等於它的子節點...我也知道我們使用公式Tree [K/2]代表樹中的父節點,其左邊的子節點是Tree [2K ]及其右子樹是[2K + 1],只有當我們從1開始,我們的數組這是真的不爲0
有三種情況來檢查我的數組是最小堆與否:
1。內部節點有左右兩邊的孩子。
2.最後一個節點可能只有一個孩子離開孩子。
3.樹葉沒有任何孩子。
,但我不明白我怎麼能做到這一點的代碼的形式在我的計劃...... PLZ修改我的計劃或給我暗示,我怎麼能做到這一點.... ????
固定縮進 –
恩,這裏已經有一個C++函數。不需要寫你自己的。 '的std :: is_heap'。 –