1.1 Getting started
1.2 Classes and objects
1.3 Strings, wrappers, arrays, and enum types
1.4 Expressions
1.5 Control flow
1.6 Simple input and output
1.7 An example program
1.8 Packages and imports
1.9 Software development
1.10 Exercises
1.11 Chapter notes

2.1 Goals, principles, and patterns
2.2 Inheritance
2.3 Interfaces and abstract classes
2.4 Exceptions
2.5 Casting and generics
2.6 Nested classes
2.7 Exercises
2.8 Chapter notes

3.1 Using an array
3.2 Sorting an array
3.3 java.util methods for arrays and random numbers
3.4 Simple cryptography with character arrays
3.5 Two-dimensional arrays
3.9 Equivalence testing
3.10 Cloning data structures
3.11 Exercises
3.12 Chapter notes

4.1 Experimental studies
4.2 The seven functions used in this book
4.3 Asymptotic analysis
4.4 Simple justification techniques
4.5 Exercises
4.6 Chapter notes

5.1 Illustrative examples
5.2 Analyzing recursive algorithms
5.3 Designing recursive algorithms
5.4 Recursion run amok
5.5 Eliminating tail recursion
5.6 Exercises
5.7 Chapter notes

6.1 Stacks
6.2 Queues
6.3 Double-ended queues
6.4 Exercises
6.5 Chapter notes

7.2 Array lists
7.3 Positional lists
7.4 Iterators
7.5 The Java Collections Framework
7.6 Sorting a positional list
7.7 Case study: Maintaining access frequencies
7.8 Exercises
7.9 Chapter notes

8.1 General trees
8.2 Binary trees
8.3 Implementing trees
8.4 Tree traversal algorithms
8.5 Exercises
8.6 Chapter notes

9.1 The priority queue abstract data type
9.2 Implementing a priority queue
9.3 Heaps
9.4 Sorting with a priority queue
9.6 Exercises
9.7 Chapter notes

10.1 Maps
10.2 Hash tables
10.3 Sorted maps
10.4 Skip lists
10.5 Sets, multisets, and multimaps
10.6 Exercises
10.7 Chapter notes

11.1 Binary search trees
11.2 Balanced search trees
11.3 AVL trees
11.4 Splay trees
11.5 (2,4) trees
11.6 Red-black trees
11.7 Exercises
11.8 Chapter notes

12.1 Merge-sort
12.2 Quick-sort
12.3 Studying sorting through an algorithmic lens
12.4 Comparing sorting algorithms
12.5 Selection
12.6 Exercises
12.7 Chapter notes

13.1 Abundance of digitized text
13.2 Pattern-matching algorithms
13.3 Tries
13.4 Text compression and the greedy method
13.5 Dynamic programming
13.6 Exercises
13.7 Chapter notes

14.1 Graphs
14.2 Data structures for graphs
14.3 Graph traversals
14.4 Transitive closure
14.5 Directed acyclic graphs
14.6 Shortest paths
14.7 Minimum spanning trees
14.8 Exercises
14.9 Chapter notes

15.1 Memory management
15.2 Memory hierarchies and caching
15.3 External searching and B-trees
15.4 External-memory sorting
15.5 Exercises
15.6 Chapter notes

16.1 Useful mathematical facts

17.1 Bibliography

## The zyBooks version of the classic Data Structures & Algorithms textbook provides a powerful interactive learning environment

The Data Structures & Algorithms in Java zyVersion contains the complete 6th edition text, plus new interactive animations and learning questions to help students learn faster and more effectively.

• Comprehensive textbook covers both introductory and advanced topics, including data structures and algorithms, mathematical analysis, and code design
• Employs an object-oriented paradigm as the framework for designing data structures
• Extensive code base matches many standard Java libraries, and the complete code base for the the book is available on GitHub

Co-author Professor Michael Goldwasser demonstrates the power of an interactive approach to data structures:

## What is a zyVersion?

zyVersions are leading print titles converted and adapted to zyBooksâ€™ interactive learning platform, allowing for a quick and easy transition to an engaging digital experience for instructors and students.

zyBooksâ€™ web-native content helps students visualize concepts to learn faster and more effectively than with a traditional textbook. (Check out our research.)

This zyVersion of Data Structures & Algorithms in Java benefits both students and instructors:

• Instructor benefits
• Continuous publication model updates your course with the latest content and technologies
• Robust reporting gives you insight into studentsâ€™ progress, reading and participation
• Animations and other interactive content can be shown in presentation mode and used during a lecture
• Student benefits
• Learning questions and other content serve as an interactive form of reading
• Instant feedback on homework
• Concepts come to life through extensive animations embedded into the interactive content
• Save chapters as PDFs to reference the material at any time

## Authors

Michael Goodrich, PhDÂ

Distinguished Professor of Computer Science, University of California, IrvineÂ

Roberto Tamassia, PhDÂ

Professor of Computer Science, Brown University

Michael Goldwasser, PhDÂ Â

Professor of Computer Science, Saint Louis University