Algorithms let us think about computation independently of the limitations of a computer or programming language.

  1. ๐Ÿ’ง Breadth First Search explores a graph level by level, ideal for finding shortest paths in unweighted graphs.
  2. ๐ŸšŸ Depth First Search dives deep along one branch before backtracking, useful for connectivity and topological sort.
  3. ๐Ÿ—บ๏ธ Dijkstra finds shortest paths from a source in a non-negative weighted graph using a priority queue.
  4. ๐Ÿšข Primโ€™s and Kruskalโ€™s Algorithm greedily builds a minimum spanning tree by selecting the lightest edges without creating cycles.
  5. ๐Ÿฅฝ Union-Find manages disjoint sets with nearโ€‘constant time union and find operations (useful for connectivity).
  6. ๐Ÿ“ Hashmaps store keyโ€“value pairs for average lookup, insertion, and deletion.
  7. ๐Ÿฝ๏ธ Stacks provide a LIFO structure supporting push and pop at one end, handy for backtracking and parsing.
  8. ๐Ÿ Queues provide a FIFO structure supporting enqueue at rear and dequeue from front, ideal for BFS.
  9. โ›“๏ธ Linked Lists provide a sequence of nodes where each node points to the next, allowing insertion/deletion with a pointer.
  10. ๐Ÿ“Š Graphs model entities (nodes) and their relationships (edges), foundational for network and connectivity problems.
  11. ๐ŸŒณ Binary Search Trees are binary trees where left child < node < right child, giving search on average.
  12. โ›ฐ๏ธ Heaps are a treeโ€‘based priority queue that lets us extract the max (or min) in .
  13. ๐Ÿ“ K-Dimensional Trees partition kโ€‘dimensional points recursively, useful for nearest neighbor searches.
  14. ๐Ÿ“‚ B-Trees and B+ Trees provide wide, multiโ€‘way trees optimized for disk and block storage, minimizing I/O operations.