CS2852
Homework
- If the items are shown as "Due", you must complete them before attending class
- If the items are shown as "Complete by", you are encouraged to complete them prior to attending class, but you may still attend class without completing the assignment
Week 1
Due 7am Friday of week 1, email to your instructor
- Implement the
ArrayList.remove(int index)
method. - Implement the
ArrayList.remove(Object target)
method.
Week 2
Complete by 8am Monday of week 2 - be prepared to ask questions in class
- Watch Introduction to ArrayLists video and prepare questions and feedback for your instructor
- Watch Introduction to LinkedLists video and prepare questions and feedback for your instructor
- Study Collection and List interfaces and prepare questions and feedback for your instructor
- Study Array-Based Lists, ArrayList review and prepare questions and feedback for your instructor
- Study Generics in Java and prepare questions and feedback for your instructor
Complete by 8am Friday of week 2 - be prepared to ask questions in class
- Give the Big-O time complexity for the following algorithm. Justify your answer.
public static boolean areUnique(List<String> strings) { boolean areUnique = true; for(int i=0; areUnique && i<strings.size(); ++i) { for(int j=0; areUnique && j<strings.size(); ++j) { if(i!=j && strings.get(i).equals(strings.get(j)) { areUnique = false; } } } return areUnique; }
- Give the Big-O time complexity for the following algorithm. Justify your answer.
public static boolean areUnique(List<String> strings) { boolean areUnique = true; for(int i=0; areUnique && i<strings.size(); ++i) { for(int j=i+1; areUnique && j<strings.size(); ++j) { if(strings.get(i).equals(strings.get(j)) { areUnique = false; } } } return areUnique; }
- Give the Big-O time complexity for T(n) = 8 + 17n + 3n2.
- Implement the
ArrayList::ArrayListIterator.remove()
method. - Implement the
LinkedList.add(int, E)
method.
Week 3
Complete by lecture 1 of week 3 - be prepared to ask questions in class
- Study Iterators and prepare questions and feedback for your instructor
- Study Linked Lists and prepare questions and feedback for your instructor
One hour before lecture 2 of week 3, email to your instructor
- Implement the
LinkedList.iterator()
method and the complete inner class that implements theIterator
interface.
Week 5
Complete by lecture 1 of week 6 - be prepared to ask questions in class
- Done in class
Implement aStack
class with three methods using an array to store items on the stack:E push(E element)
E peek()
E pop()
- Implement a method,
parenChecker
, that accepts aString
and returnstrue
if the parenthesization is legal. The method must make use of theStack
developed in the previous problem. For example:((a + b) + c)
— Good([a + b] + c)
— Good(a + {b + c})
— Good((a + b) + c
— Bad([a + b] + c]
— Bad(a + {b + c)}
— Bad
- Implement a
Queue
class with three methods using anLinkedList
to store items on the queue:boolean offer(E element)
E peek()
E poll()
- Finish implementing the
CircularQueue
class we began in lecture. - Implement
boolean binarySearch(List<E> list, E target)
which returns true if thelist
containstarget
. You may assume that the list is sorted. You may not use recursion.
Week 6
- Implement the
toString()
method (along with a recursive method) for theBST
class developed in lecture that returns a string containing all of the elements in sorted order.
Week 7
- Implement a recursive method,
numberOfLeaves()
that returns the number of leaf nodes in the tree.
Week 9
- Modify the inner
Node
class from theBST
class to have one addtional attribute:Node<E> parent
, that refers to the parent of the node. - Implement a recursive
height(Node<E> subroot) method that will return the height of the subtree (zero if passed
null
) - Implement,
balanceFactor(Node<E> subroot)
, that returns the difference between the height of the left subtree and the height of the right subtree. - Implement
rightRotate(Node<E> subroot)
, which performs a right rotation aroundsubroot
and returns a reference to the node that takes the place ofsubroot
in the tree. - Assume
leftRotate()
has also been implemented. Modify theadd()
implementation such that the BST does not violate the rules associated with an AVL tree - Give an example of when a deep copy is required. Explain what would go wrong if a shallow copy is performed instead.
Last modified: Tuesday, 16-Feb-2016 00:32:55 EST