Question 1 Determine if it is a heap
minHeap could be implemented by array;
用array实现的heap有什么特点:从index
当前的index是i:
左边的孩子是2* i + 1
右边的孩子是2* i + 2
堆序性
每个subtree最值都在顶端
array[i] < array[2 * i + 1], array[i] < array[2 * i + 2]
public boolean isMinHeap(int[] array) {
// assume array is valid
for (int i = 0 ; i < array.length; i++) {
int currentValue = array[i];
if (2 * i + 1 < array.length) {
if (currentValue > array[2 * i + 1]) {
return false;
}
}
if (2 * i + 2 < array.length) {
if (currentValue > array[2 * i + 2]) {
return false;
}
}
}
return true;
}
TC & SC:
O(n), O(1)
Last updated