# What does the following algorithm do?

Assignment 2
Instructions
According to our suggested 16 week “Course Schedule,” you should complete and submit Assignment 2 by the Sunday at the end of Week 6. This assignment is worth 10% of your final grade. To receive full marks, answer each of the following questions in a clear and comprehensive manner. You can find the assignment marking criteria at the end of this document.
Questions
1.  Show that if f(n) is O(h(n)) and g(n) is O(i(n)), then f(n) g(n) is O(h(n) i(n)).
[2 marks]
2. Show that 3(n 1)7 2n log n is O(n7). Hint: Try applying the rules of Theorem 1.7. You will have to use the insert equations to answer this question. [2 marks]
3. Give an O(n)-time algorithm for computing the depth of each node of a tree T, where n is the number of nodes of T. Assume the existence of methods setDepth (v,d) and getDepth(v) that run in O(1) time.  [2 marks]
4. What does the following algorithm do? Analyze its worst-case running time and express it using “Big-Oh” notation. [2 marks]
Algorithm Foo (a,n):
Input: two integers, a and n
Output: ?
k ß 0
b ß 1
while k < n do
k ßk 1
b  ß b *a
return b
5. a. Describe (in pseudo-code) a findAll Elements (k) method of an AVL tree T. It should run in O(logn s) time where n is the size of T and s is the number of elements returned (i.e., the number of nodes in T whose key is k).
b. Analyze the running time of your algorithm.
[2 marks]
Marking Criteria for Assignments