Advanced Python data structures by Reuven M. Lerner