这是我用粗略的草图绘制出具有任意值的堆的开始
0 1 2 3 4 5 6 7 8 9 ... [-] [10] [14] [15] [22] [21] [24] [23] [44] [30] ...
为什么array [0]中的元素总是被设置为null?
或者为什么我们不应该使用它?
解决方法
有几种方法可以将二进制堆表示为数组.
有一种使用元素零的方式;还有一种方法是不使用元素零点:
> root是元素0;元素n的子元素是元素2n 1和2n 2;
> root是元素1;元素n的子元素是元素2n和2n 1.
两者都不比其他人更“正确”.前者更适合使用zero-based arrays的编程语言,而后者更适合使用one-based arrays的语言.
看来你遇到了使用第二种方法的实现.由于所讨论的语言,Java使用基于零的数组,元素零存在但未被使用.