A graph is a non-linear data structure consisting of nodes and edges where the nodes are connected via edges. There are different ways to represent graphs including using an adjacency matrix or adjacency lists. Common graph terminology includes vertices, edges, degree, and traversal algorithms like depth-first search (DFS) and breadth-first search (BFS) which are used to search graphs. DFS uses a stack and explores nodes as deep as possible before backtracking while BFS uses a queue and explores all neighbor nodes at the present depth before moving deeper.