This is an old revision of the document!
Lab 08 - Heaps
Heaps
Binary Heaps are binary trees with the following properties:
I. forall nodes n: if c is a child of n, then n.value >= c.value
II. the tree is almost complete (missing elements are possible only on the last level)
15 / \ 9 5 / \ / 2 3 1
Heap representation using an array:
15 9 5 2 3 1
This corresponds to a BF traversal of the tree, and it guarantees that the children nodes corresponding to v[i] are v[2i + 1] and v[2i + 2]
1. Basic operations. Implement and analyse the complexity for the following operations:
1.1 empty_heap() - creates an empty heap.
1.2 insert(v, h) - inserts $ v$ in $ h$ ; At the end of the procedure , $ h$ is the updated heap.
1.3 get_max(h) - return the maximum value from the heap.
1.4 delete(pos,h) - deletes element at position $ pos$ from the heap. Make sure the heap property is preserved!!!
2. Using heaps:
2.1 Implement a procedure which constructs a heap from an arbitrary array, using the insert operation.
2.2 Implement heapsort using the previous procedure.