Lets consider the min heap here.
Inserting the key k in the given heap. Consider the heap:
Here is the implementation of heap insertion in java:
Inserting the key k in the given heap. Consider the heap:
- Insert k at the end of the last level
- a) If the heap property is not broken you are done. Suppose k = 10. Here 10 is more than 4, hence min-heap property i.e. parent < child is already followed. Hence everything ok.
b)If the heap property is broken, then you have to bubble up the added child until heap property is restored. Suppose k = 5.
As, we can see the 5 and 12 have problem, we bubble up 5 by swapping it with 12:
Now after swapping 5 and 12, we see still the heap property is not restored, hence we swap 8 with 5.
After swapping 5 and 8, we see that heap property is restored.
Here is the implementation of heap insertion in java:
public void insert(int value) {
if (heapSize == data.length)
throw new HeapException("Heap's underlying storage is overflow");
else {
heapSize++;
data[heapSize - 1] = value;
bubbleUp(heapSize - 1);
}
}
private void bubbleUp(int nodeIndex) {
int parentIndex, tmp;
if (nodeIndex != 0) {
parentIndex = getParentIndex(nodeIndex);
if (data[parentIndex] > data[nodeIndex]) {
tmp = data[parentIndex];
data[parentIndex] = data[nodeIndex];
data[nodeIndex] = tmp;
bubbleUp(parentIndex);
}
}
}







0 comments:
Post a Comment