next up previous
Next: 4.8.3 Splay Trees Up: 4.8 Problems Previous: 4.8.1 General Trees

4.8.2 Binary Search Trees

Suppose that we have numbers between 1 and 1000 in a binary search tree and want to search for the number 363. Which of the following sequences could not be the sequence of nodes examined?
2, 252, 401, 398, 330, 344, 397, 363.
924, 220, 911, 244, 898, 258, 362, 363.
925, 202, 911, 240, 912, 245, 363.
2, 399, 387, 219, 266, 382, 381, 278, 363.
935, 278, 347, 621, 299, 392, 358, 363.
In a binary search tree, given a key x, define successor(x) as the key which is the successor of x in the sorted order determined by an inorder tree walk. Define predecessor(x) similarly. Explain how, given x, its successor and predecessor may be found.
A binary search tree is constructed by inserting the key values 1, 2, 3, 4, 5, 6, 7 in some order specified by a permutation of 1, ..., 7, into an initially empty tree. Which of these permutations will lead to a complete binary search tree ( 1 node at level 1, 2 nodes at level 2, and 4 nodes at level 3)?
Suppose that the search for key k in a binary search tree ends up in a leaf. Consider three sets: A, the keys to the left of the search path; B, the keys on the search path; and C, the keys to the right of the search path. Investigate if the following is true: a $ \leq$ b $ \leq$ c $ \forall$a $ \in$ A; b $ \in$ B; c $ \in$ C. Give a proof or a counter-example as the case may be.
Is the operation of deletion in a binary search tree commutative in the sense that deleting x and then y from a binary search tree leaves the same tree as deleting y and then x? Argue why it is so or give a counter-example.

Devise an algorithm that takes two values, a and b such that a $ \leq$ b, and visits all keys x in a BST such that a $ \leq$ x $ \leq$ b. The running time of your algorithm should be O(N + log n), where Nis the number of keys visited and n is the number of keys in the tree.

A random binary search tree having n nodes, where n = 2k - 1, for some positive integer k, is to be reorganized into a perfectly balanced binary search tree. Outline an efficient algorithm for this task. The algorithm should not use any memory locations other than those already used by the random binary search tree.

Consider three keys, k1, k2, k3, such that k1 < k2 < k3. A binary search tree is constructed with these three keys. Depending on the order in which the keys are inserted, five different binary search trees are possible.
Write down the five binary search trees.
Let p, q, r be the probabilities of probing for k1, k2, k3, respectively in the given binary search trees (p + q + r = 1). Compute the average number of comparisons (or probes) on a successful search for each of the above five binary search trees.
Define the optimum binary search tree as the one for which the average number of comparisons on a successful search is minimum. Determine the range of values of p, q, r, for which the completely balanced search tree is the optimum search tree.
Given a set of 31 names, each containing 10 uppercase alphabets, we wish to set up a data structure that would lead to efficient average case performance of successful and unsuccessful searches on this set. It is known that not more than 5 names start with the same alphabet. Also, assume that successful and unsuccessful searches are equally likely and that in the event of a successful search, it is equally likely that any of the 31 names was searched for. The two likely choices for the data structure are: Answer the following questions:
What is the hashing function you would use for the closed hash table?
Assume that the computation of the hash function above takes the same time as comparing two given names. Now, compute the average case running time of a search operation using the hash table. Ignore the time for setting up the hash table.
Compute the average case running time of a search operation using the BST. Ignore the time for setting up the BST.

next up previous
Next: 4.8.3 Splay Trees Up: 4.8 Problems Previous: 4.8.1 General Trees