The final is cumulative; however, it will concentrate on material covered since the last quiz. To review for previously covered material, you should go over the first four quizzes, review sheets, and sample questions. This review sheet covers only new material. Further, you should prepare to synthesize concepts from across the course. Topics covered: - Dictionary/Map ADT - operations - Hash tables - Determining table size - Hash function - Collision resolution methods - Chaining - Open addressing - Linear probing - Trees - Binary Trees - Definitions - Full - Complete - Traversal algorithms - Algebraic expression trees - Binary Search Trees - Definition - Searching for / adding values - Deleting values - Implementing the dictionary and set ADTs Skills you should be able to demonstrate: - Explain the use of all the ADTs and data structures mentioned above. - Identify the basic methods/operations for all the ADTs and data structures mentioned above. - Know the efficiency of the basic methods/operations for all the ADTs and data structures mentioned above. - Write code to solve a problem using a Java Map - Be able to declare a map appropriately - Be able to lookup and insert values into the map - Given a hash code, show how different keys are stored in a hash table, including handling any collisions that occur. You should be able to show the results of adding multiple keys to a hash table if either the chaining or linear probe method of collision resolution is used. - You should be able to write code to add and lookup keys in a hashtable that is implemented using the chaining collision resolution method. - You should understand and be able to apply the definition of a Binary Search Tree. You should be able to add values to and delete values from a BST (maintaining its status as a BST). - You should be able to compute properties on a BST, e.g., the height of a node, the number of nodes in the subtree rooted at a node, a list of all the ancestors or descendants of a node. - You should be able to analyze the efficiency of operations on a BST.