1. Depth first search is an algorithm for traversing tree and graph data structures where one starts at the root node and explores as deep as possible along each branch before backtracking. 2. It can be implemented using a stack and explores edges out of the most recently discovered vertex before backtracking to explore other paths. 3. Breadth first search begins at a root node and inspects all neighboring nodes before exploring nodes further away, implementing it using a queue.