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 theIteratorinterface.
Week 5
Complete by lecture 1 of week 6 - be prepared to ask questions in class
- Done in class
Implement aStackclass 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 aStringand returnstrueif the parenthesization is legal. The method must make use of theStackdeveloped 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
Queueclass with three methods using anLinkedListto store items on the queue:boolean offer(E element)E peek()E poll()
- Finish implementing the
CircularQueueclass we began in lecture. - Implement
boolean binarySearch(List<E> list, E target)which returns true if thelistcontainstarget. 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 theBSTclass 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
Nodeclass from theBSTclass 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 passednull) - 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 aroundsubrootand returns a reference to the node that takes the place ofsubrootin 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