- Prefix trees (Tries)
- Suffix trees
- Suffix arrays
- KMP
- Rabin-Karp
- Boyer-Moore
- Bubble sort
- Insertion sort
- Merge sort
- Quick sort
- Selection sort
- Bucket sort
- Radix sort
- Counting sort
- Collision resolution algorithms
- BFS
- DFS (inorder, postorder, preorder)
- Height
- Insert node
- Delete a node
- Find element in BST
- Find min, max element in BST
- Get successor element in tree
- Check if a binary tree is a BST or not
- Insert
- Bubble up
- Extract max
- Remove
- Heapify
- Heap sort
- Various implementations
- Adjacency matrix
- Adjacency list
- Adjacency map
- Single-source shortest path
- Dijkstra
- Bellman-Ford
- Topo sort
- MST
- Prim algorithm
- Kruskal's algorithm
- Union Find Data Structure
- Count connected components in a graph
- List strongly connected components in a graph
- Check for bipartite graph
- Count Change
- 0-1 Knapsack
- http://www.hiredintech.com/system-design/
- https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023
- http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/
- https://github.com/donnemartin/system-design-primer
- https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf