🎁Hash Tables
🎁Graphs
🎁Queues
**could be O(n) with hash collisions and dynamic array resizing but unlikely
🎁Arrays
Dynamic
Static
Searching. Is it sorted?
Yes - Divide and Conquer - Binary search O(log N) 🚀
No. Will sorting make it faster? If still no, Linear Search🚀
🎁Tree
🎁Linked List
🎁Singly Linked List
🎁Doubly Linked List
Improve Time Complexity?
Collision?
Linked List
🎁Binary Tree
String question?
Turn it into an Array ~ split() 🚀
🎁Stacks
Array Stack
Linked List Stack
Array Queue (BAD)
Linked List Queue
Graph Traversal? O(n)
🚀 Depth First Search (DFS)
🚀 Breadth First Search (BFS)
Shortest Path?
🚀 Bellman-Ford
Weighted or Unweighted?
Directed or Undirected?
🎁Trie
🎁Binary Search Tree
🎁Balanced BST
🎁AVL Tree
🎁Red Black Tree
Tree Traversal? O(n)
Sorting? ~ O(N log N)
Quick Sort 🚀
Merge Sort 🚀
Heap Sort 🚀
Bubble Sort 🚀
Insertion Sort 🚀
Selection Sort 🚀
Fast Access O(1), tradeoff: more memory O(n)
Radix Sort 🚀
** can be O(n) on expanding memory
Dynamic Programming
🚀Memoization
Recursion?
Be mindful of Space Complexity! (Stack overflow)
No. Is it a String? See if a Trie data structure helps
🎁Heap
🎁Binary Heap
Priority Queue
Cyclic or Acyclic?
Counting Sort 🚀
🚀 Dijkstra
Inorder
Postorder
Preorder