Links
Fundamentally a graph is a data structure which is characterized by nonlinearity for representing connections of vertices (or nodes) and edges. By definition:
A graph is a data structure which consists of a finite set of nodes (or vertices) with a set of edges connecting a pair of nodes (or vertices).
BFS and DFS are the inverse of the other, while BFS uses queue data structure, DFS uses stack data structure.
A graph can be represented as an adjacency matrix or adjacency list. In most cases, it is more efficient to use the latter because it requires less memory and offers better time-complexity when performing search algorithms.
Either search can be the best choice for a specific tree, graph, or problem. Generally, given an unweighted tree or graph, breadth first searches are preferred for situations where the desired node is likely to be closer (by number of levels) to the root.