For undergraduate or graduate courses in Graph Theory in departments of mathematics or computer science. This text offers a comprehensive and coherent introduction to the fundamental topics of graph theory. It includes basic algorithms and emphasizes the understanding and writing of proofs about graphs. Thought-provoking examples and exercises develop a thorough understanding of the structure of graphs and the techniques used to analyze problems. The first seven chapters form the basic course, with advanced material in Chapter 8.