Ваш код извлечения первого элемента неверен (вы, наверное, догадались, что это бит, который не работает :-)) - похоже, вы делаете только один шаг цикла, который вам нужен. Вам нужно заменить корень дерева на «последний» элемент кучи (вы делаете это), а затем пройти вниз по дереву оттуда к листу, фиксирующему свойство кучи (вы делаете только один шаг: что).
Кроме того, вы инициализируете «parent» вне цикла «кучи»; если только я не совсем неправильно понимаю, что вы пытаетесь сделать, вы хотите сбросить его на 1 каждый раз, когда извлекаете элемент.