This book is the companion to Josh Hug's version of CS61B, UC Berkeley's Data Structures course. The current version of the course can be found at datastructur.es/sp18.
<!--This course is about training you to be an efficient programmer [add more].
This course presumes that you already have a strong understanding of programming fundamentals. At the very least, you should be comfortable with the ideas of object oriented programming, recursion, lists, and trees. You should also understand how to use a terminal in the operating system of your choice. If you don't have such experience, I encourage you to check out CS61A, UC Berkeley's introductory programming course CS61A.
If you already have experience with Java, you might consider skipping straight to chapter 2, though you might still get something by skimming the first chapter.
All materials for this course are distributed under a Creative Commons 4.0 BY-NC-SA license, which you can learn about in glorious human-readable terms at this link. The basic idea is that it's all free, and you can even redistribute or remix the course content however you want, so long as you give credit to Josh Hug and also enforce the same license on any content you create. Sites like Chegg, CourseHero, etc. may not distribute my course materials.