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;
}
Я ищу этот вопрос в переполнении стека. Но мне сложно понять кодировку, так как кто-то использовал рекурсивную процедуру.
Я знаю, что в Min Heap каждый родительский узел меньше или равен своим дочерним элементам... я также знаю, что мы представляем родителя в Tree [K], используя формулу Tree [K/2], а его левый дочерний элемент - это Tree [2K], а его правый child — это Tree[2K+1], и это верно только в том случае, если мы начинаем наш массив с 1, а не с 0.
Есть три случая, чтобы проверить, является ли мой массив минимальной кучей или нет:
1. Внутренние узлы имеют как левых, так и правых дочерних элементов.
2. Последний узел может иметь только один дочерний элемент, который является левым дочерним элементом.
3. У листьев нет дочерних элементов.
но я не могу понять, как я могу сделать это в виде кода в моей программе... пожалуйста, измените мою программу или дайте мне подсказку, как я могу это сделать....????
std::is_heap
. - person Raymond Chen   schedule 20.09.2015