- Given the following heap, where the items are integers and
the heap is ordered according to the <= relation:
2 / \ 5 6 / \ / 8 5 7
Draw the five heaps resulting from removing each of the first five items in the ordering using the algorithm discussed in class (see Slides 26-32 in Heaps and Heapsort). - Write the body of the following static method, which
returns true if and only if the given BinaryTree<Integer>,
t, satisfies the heap ordering property according to
the <= relation. (Note that this says nothing about
the shape of the tree, i.e., it should work whether or not t is a
complete binary tree, and should not check whether it is.)
/** * Checks if the given {@code BinaryTree<Integer>} satisfies the heap * ordering property according to the <= relation. * * @param t * the binary tree * @return true if the given tree satisfies the heap ordering property; * false otherwise * @ensures <pre> * satisfiesHeapOrdering = [t satisfies the heap ordering property] * </pre> */ private static boolean satisfiesHeapOrdering(BinaryTree<Integer> t) {...}
- Draw and complete the commutativity diagram on Slides 18-23 in More About Heaps.
Additional Questions
- Think about what it would take to decide if a given binary tree satisfies the heap shape property, i.e., to decide if the binary tree is complete.
- Write the body of the following static method.
/** * Checks if the given {@code BinaryTree<T>} is complete. * * @param <T> * type of {@code BinaryTree} entries * @param t * the {@code BinaryTree} * @return true if the given tree is complete; false otherwise * @ensures isComplete = [t is complete] */ private static <T> boolean isComplete(BinaryTree<T> t) {...}