这是我对具有任意值的堆开始的粗略草图
0 1 2 3 4 5 6 7 8 9 ...
[-] [10] [14] [15] [22] [21] [24] [23] [44] [30] ...
为什么array[0]中的元素一定要设置为null?
或者为什么我们不应该使用它?
最佳答案
有几种方法可以将二叉堆表示为数组。
有一种方法可以使用元素零;还有一种方法可以不使用元素零:
- 根是元素0;元素
n
的子元素是元素2n+1
和2n+2
; - 根是元素1;元素
n
的子元素是元素2n
和2n+1
。
没有一个比另一个更“正确”。前者更适合使用 zero-based arrays 的编程语言。 , 而后者更适合带有 one-based arrays 的语言.
您似乎遇到了使用第二种方法的实现。由于所讨论的语言 Java 使用从零开始的数组,元素零存在但未被使用。
关于java - 为什么不使用堆数组的元素零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9462003/