Я полагаю, у вас есть ошибка в вашем решении.
Первая проверка:
если родитель (узел) == NULL
необходимо удалить, но нужно добавить проверку, что узел! = NULL .
Более того, я предлагаю использовать список в качестве дополнительного параметра, в который вы положите ответ.
Итак, это моя реализация:
Algorithm: heapMinimum(node, minList)
if (node != NULL)
{
if (minList.empty() || minList.getFirst().element() == node.element())
{
minList.insertLast(node)
heapMinimum(left(node), minList)
heapMinimum(right(node), minList)
}
}
Предполагая, что добавление элемента в список занимает O (1), мы получаем, что функция принимает O (k), где k - количество минимальных значений в куче.
Наслаждайтесь.