This book is for math and computer science majors, for students and representatives of many other disciplines (like bioinformatics, for example) taking courses in graph theory, discrete mathematics, data structures, algorithms. It is also for anyone who wants to understand the basics of graph theory, or just is curious. No previous knowledge in graph theory or any other significant mathematics is required. The very basic facts from set theory, proof techniques and algorithms are sufficient to understand it; but even those are explained in the text. Structurally, the text is divided into two parts where Part II is the generalization of Part I. The first part discusses the key concepts of graph theory
with emphasis on trees, bipartite graphs, cycles, chordal graphs, planar graphs and graph coloring. The second part considers generalizations of Part I and discusses hypertrees, bipartite hypergraphs, hypercycles, chordal hypergraphs, planar hypergraphs and hypergraph coloring. There is an interaction between the parts and within the parts to show how ideas of generalizations work. The main point is to exhibit the ways of generalizations and interactions of mathematical concepts from the very simple to the most advanced. One of the features of this text is the duality of hypergraphs. This fundamental concept is missing in graph theory (and in its introductory teaching) because dual graphs are not properly graphs, they are hypergraphs. However, as Part II shows, the duality is a very powerful tool in understanding, simplifying and unifying many combinatorial relations; it is basically a look at the same structure from the opposite (vertices versus edges) point of view.