- Strings
- Arrays
- Linked lists
- Stacks and queues
- Hash maps** and build from scratch with arrays
- Heaps/Priority queue
- Trees: binary, binary search, n-ary, tries, balanced binary
- Graphs: object/pointer, matrix, adjacency list
- Tree traversal: BFS & DFS, preorder, postorder, inorder
- Graph traversal: BFS and DFS // Computational complexity, tradeoffs, implementation
- Dijkstra’s Algorithm and A*
- Other: NP-complete problems, traveling salesman and knapsack problem
- Merge sort
- Quick sort
- Other sorting algos: heap sort, radix sort, bucket sort
- Two pointers
- Sliding window
- Binary search
- Greedy algorithms
- Intervals
- Dynamic Programming
- Bit manipulation
- Mathematics: discrete math, combinatorics, probability
- BIG O
- Number theory
- Testing