在优先队列的这个实现中,我必须使用递归来确定我作为方法参数接收的数组IsMaxHeap
是否是最大堆。
我想确保我评估所有可能使这项工作正常工作或不工作没有任何问题的案例。
static boolean isMaxHeap(int[] H, int idx) {
if(2*idx == (H.length -1) && H[2 * idx] <= H[idx])
return true;
if(2*idx > (H.length -1))
return true;
if ((2*idx+1) == (H.length -1) && H[2 * idx] <= H[idx] && H[2 * idx + 1] <= H[idx])
return true;
if((2*idx+1) > (H.length -1))
return true;
if (H[2 * idx] <= H[idx] && H[2 * idx + 1] <= H[idx])
return isMaxHeap(H, (idx + 1));
else
return false;
}
你可以帮帮我吗?