Books to learn data structures and algorithms. They are not all free.
Grokking Algorithms If you don't really understand other books on algorithms, or haven't taken a math course in some time, this illustrated book is a good place to start.
Data Structures and Algorithms in Java (2nd Ed) An easy to understand and practical data structures and algorithms book without all the hard math. The descriptions of algorithms are very clear, and it has lots of code examples in Java.
Algorithms Unlocked This book by Thomas H. Cormen has limited math and explains how algorithms work. It's not long and can help you understand basic algorithms before moving on to the more difficult books.
Algorithms (4th ed) This textbook by Robert Sedgewick and Kevin Wayne that has lots of examples in Java, and has some mathematical proofs. Many also find this easier to understand than CLRS.
Introduction to Algorithms (3rd ed) This textbook is known as CLRS (for it's authors Cormen, Leiserson, Rivest, and Stein.) It's an oft-recommended math-heavy rigorous algorithms book.