O método parent da Heap deveria fazer o floor da fórmula (index-1)/2 para funcionar no caso da raiz, visto que se não for feito o floor o resultado vai ser o índice 0, que é a própria raiz, e não o -1, que é um índice inexistente. O seguinte link explica a necessidade do uso do floor
A imagem a seguir contém evidências coletadas no jshell e nela podemos ver que a fórmula sem o floor retorna, de fato, 0. E mostramos também que o Math.floor só retorna o que esperamos (-1) quando trabalhamos com floats. Como na Heap utilizamos inteiros, precisamos então do Math.floorDiv(numerador, denominador), que testamos para a mesma árvore presente no material e os resultados foram corretos, como pode observado abaixo.
O método
parent
daHeap
deveria fazer ofloor
da fórmula(index-1)/2
para funcionar no caso da raiz, visto que se não for feito ofloor
o resultado vai ser o índice 0, que é a própria raiz, e não o-1
, que é um índice inexistente. O seguinte link explica a necessidade do uso do floorA imagem a seguir contém evidências coletadas no
jshell
e nela podemos ver que a fórmula sem ofloor
retorna, de fato, 0. E mostramos também que oMath.floor
só retorna o que esperamos (-1) quando trabalhamos com floats. Como naHeap
utilizamos inteiros, precisamos então doMath.floorDiv(numerador, denominador)
, que testamos para a mesma árvore presente no material e os resultados foram corretos, como pode observado abaixo.Créditos: erro encontrado pela aluna Rayanne