An array of numbers {1, 2, 3, 4, 5, 6, 7} represents the binary tree
so that we have a left-to-right index ordering with the invariant that the children of a node must be strictly less than the value of the node itself. Assuming that the index of an array starts at one, then we can get the children of the root node by 2*n and 2*n + 1 (ie: the children of 1 in the picture is 2 and 3, which are 2*1 and 2*1+1 respectively) while the parent of a node is the floor of n/2 (ie: 2 is 5's parent, floor(5/2) = 2, and 3 is 6's root, floor(6/2) = 3). Using this navigation scheme, and the heap invariant, we will in the worst case scenario (which is actually always the average case here too, can you think of why?) need to check log-base-2 of the size of the array per push/pop operation while keeping the root node always the smallest value. \