I studied Data Structures and Algorithms in Java by Goodrich and I thought it was good enough.
I started with this in class: https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338#nav-search-keywords Java made it really easy to implement so I spent less time implementing and more time understanding. Then couple months later I got the algorithm design manual.
Try Data Structures and Algorithms in Java
It used as the main text for my data structures and algorithms course.
Data Structures and Algorithms in Java
Drži se jave (friendly advice).
Ovo je super knjiga nakon što savladaš osnove.
I took most of these classes last semester so I might be able to help.
2100: I think the book will depend on the professor for this class, but mine was this one. If you could avoid taking it with Huang I would, he's pretty bad and makes the class a lot more painful than it needs to be.
2300W: I'm assuming Keith Barker is going to be the only one teaching this class again, which is good because he is a very good and fair teacher. I don't remember what the book is but you don't really use it anyway so it doesn't matter.
2500: I am currently taking this class with Russell, but I think he's only teaching this class because they changed the format of the class. However if he is teaching it again next semester I would reccomend him, he's pretty good. Here is the book we used for the first half of the semester.