This is the second course in the data structures sequence that introduces students to non-linear data structures: trees (binary, balanced, and n-ary) and graphs and how to use them to design efficient algorithms to solve fundamental computing problems such as sorting data and searching for information.