things i need to cover
- graph coloring
- quicksort vs mergesort vs heapsort
- 3 types of graph representation (objects and pointers, matrix, and adjacency list)
- BFS/DFS complexity
- balanced trees, red/black tree, a splay tree or an AVL tree
- trie trees, n-ary trees
- implement hashtables