There are O(n) calls to Heapify, thus BuildHeap is O(nlgn), which is an upper
bound but not a tight bound (o(nlgn)).

The tight upper bound is O(nh).

Notice that the height h changes as the heap is being built.

Note: There can be at most
nodes of height
h in an n-element heap.

Thus Heapify = O(h) for nodes of height h.