Hug61B Spring 2019 Edition
This book is the companion to Josh Hug's version of CS61B, UC Berkeley's Data Structures course. The spring 2019 version of the course can be found at https://sp19.datastructur.es/. There may be newer versions. See https://datastructur.es.
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.
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.