hash tables introduces the concept of hashing and the use of hash tables for performing fast searches different addressing techniques are presentedincluding those for both closed and open addressing collision resolution techniques and hash function design are also discussed the magic behind python' dictionary structurewhich uses hash tableis exposed and its efficiency evaluated advanced sorting continues the discussion of the sorting problem by introducing the recursive sorting algorithms--merge sort and quick sort--along with the radix distribution sort algorithmall of which can be used to sort sequences some of the common techniques for sorting linked lists are also presented binary trees presents the tree structure and the general binary tree specifically the construction and use of the binary tree is presented along with various properties and the various traversal operations the binary tree is used to build and evaluate arithmetic expressions and in decoding morse code sequences the tree-based heap structure is also introduced along with its use in implementing priority queue and the heapsort algorithm search trees continues the discussion from the previous by using the tree structure to solve the search problem the basic binary search tree and the balanced binary search tree (avlare both introduced along with new implementations of the map adt finallya brief introduction to the - multi-way tree is also providedwhich shows an alternative to both the binary search and avl trees appendix apython review provides review of the python language and concepts learned in the traditional first course the review includes presentation of the basic constructs and built-in data structures appendix buser-defined modules describes the use of modules in creating well structured programs the different approaches for importing modules is also discussed along with the use of namespaces appendix cexceptions provides basic introduction to the use of exceptions for handling and raising errors during program execution appendix dclasses introduces the basic concepts of object-oriented programmingincluding encapsulationinheritanceand polymorphism the presentation is divided into two main parts the first part presents the basic design and use of classes for those instructors who use "back to basicsapproach in teaching data structures the second part briefly explores the more advanced features of inheritance and polymorphism for those instructors who typically include these topics in their course xvii