DFS BFS

Key points:

  • DFS-stack&recursion, BFS-queue

  • If BFS works, never use DFS because of StackOverflow, important! like this one: surrounded-regions

  • DFS:

    • A and B is connected?

    • Connected component. (Union Find is faster because no need to build graph)

    • Search path

    • Has cycle

    • two color

    • Backtracking, all results

  • BFS:

    • shortest path

    • connected component

    • topological sorting

    • level order traversal

    • Topological sorting

  • Need to mark visited element:

    • if you need to get value, use HashMap

    • if just determine contain or not, use HashSet or boolean[]

Templates

BFS in a tree

  • Queue -> q.offer(root) -> while -> levelNum = q.size() -> for loop

  • if you don't need layer, for loop is not required.

Permutation & Combination

Last updated

Was this helpful?