" Problem solving with algorithms and data structures using Python / " Bradley N. Miller, David L. Ranum.