Today, we are exploring suffix trees, a data structure used for solving string problems.We begin with basic definitions related to strings and alphabets, then introduces suffix trees as compressed tries containing all suffixes of a given text. Applications include substring searching, finding repeated substrings, and data compression. The discussion covers the construction of suffix trees using tries and compressed suffix trees, along with the properties that define them, modifications needed for linear time construction, and concludes with problems suffix trees help solve and an overview of Ukkonen's algorithm, which builds suffix trees in linear time by iteratively adding suffixes and leveraging various operational types and an "active position" notation. The active position notation is coupled with suffix links which help to efficiently traverse from one suffix to another, which allows Ukkonen's algorithm to work.