•  #### Beginning Java Data Structures and Algorithms #### Overview of this book

Learning about data structures and algorithms gives you a better insight on how to solve common programming problems. Most of the problems faced everyday by programmers have been solved, tried, and tested. By knowing how these solutions work, you can ensure that you choose the right tool when you face these problems. This book teaches you tools that you can use to build efficient applications. It starts with an introduction to algorithms and big O notation, later explains bubble, merge, quicksort, and other popular programming patterns. You’ll also learn about data structures such as binary trees, hash tables, and graphs. The book progresses to advanced concepts, such as algorithm design paradigms and graph theory. By the end of the book, you will know how to correctly implement common algorithms and data structures within your applications.
Title Page Packt Upsell Contributors Preface  Free Chapter
Algorithms and Complexities Sorting Algorithms and Fundamental Data Structures Hash Tables and Binary Search Trees  String Matching Algorithms Graphs, Prime Numbers, and Complexity Classes Other Books You May Enjoy Index ## Chapter 3. Hash Tables and Binary Search Trees

In the preceding chapter, we introduced the concept of data structures by looking at arrays, linked lists, queues, and stacks. In this chapter, we will use some of these primitive structures to build more complex ones. We'll start the chapter by looking at hash tables, which are useful data structures for fast key-value lookup. In the second part of the chapter, we will learn about a more complex data structure that supports range queries, called binary trees.

By the end of this chapter, you will be able to:

• Describe how hash tables work
• Implement two main techniques to deal with hash collisions
• Characterize different hashing choices
• Explain the terminology, structure, and operations of binary trees
• Demonstrate various tree traversal techniques
• Define balanced binary search trees