**DFS-depth first search**

Traverse a graph from a now and to the leaf, and then go backwards and then traverse to the leaf.

Each time it goes to the deepest.

**BFS-bread first search**

Traverse a graph level(or layer) by level. Traverse all its neighbor first, and then their neighbors one by one.

**Backtracking**

Traverse a graph using a DFS manner while only traverse those path that's qualified(qualified means possibly has solution paths), so there actually would be a **prune**.

**Backtracing vs DFS**

Why we call it a bfs with prune? Normal bfs is just traversal. But backtracking is doing something when traversal. So, on each node, on that moment you reach the node, you will have to choose if the node is valid so you abandon it(prune) or you include it and from this node you start doing a small range of traversal.