runtime.boot

Full Stack Systems
Production Mindset

CodeWithMihir

Engineering thoughtful products from interface to infrastructure.

CodeWithMihir

Data Structures & Algorithms Tutorial

Data Structures and Algorithms Tutorial: Complete DSA Roadmap from Scratch to Master Level

Learn Data Structures and Algorithms from scratch with a complete DSA roadmap covering complexity analysis, arrays, strings, recursion, trees, graphs, dynamic programming, best practices, bad practices, and time and space complexity.

What is Data Structures and Algorithms?

Data Structures and Algorithms, often called DSA, is the foundation of strong problem solving in programming. Data structures help you organize data, and algorithms help you process that data efficiently.

This DSA tutorial series is designed as a complete roadmap from beginner to advanced level. Every lesson should explain the concept from scratch, show clean implementation, compare best and bad practices, and include time complexity and space complexity.

What you will learn in this DSA roadmap

This roadmap is not only a list of topics. It is a structured learning path for building real problem-solving skill.

  • DSA fundamentals and problem-solving mindset
  • Time complexity, space complexity, and Big O analysis
  • Math patterns used in coding interviews
  • Arrays, strings, linked lists, stacks, queues, hashing, heaps, trees, tries, and graphs
  • Searching, sorting, recursion, backtracking, greedy algorithms, and dynamic programming
  • Advanced structures like segment tree, Fenwick tree, sparse table, and DSU
  • Common DSA patterns such as two pointers, sliding window, prefix sum, monotonic stack, BFS, DFS, and binary search on answer
  • Interview preparation, debugging habits, revision strategy, and clean explanation practice

How every DSA lesson should be structured

Use this structure for every MDX tutorial in the DSA series:

  1. Concept explanation from scratch
  2. Real-world intuition
  3. When to use the technique
  4. Best practice implementation
  5. Bad practice implementation
  6. Step-by-step dry run
  7. Time complexity
  8. Space complexity
  9. Common mistakes
  10. Practice problems
  11. Summary

Complete DSA topic tree

Start Here

  • How to Study DSA
  • Problem-Solving Mindset
  • Best and Bad Practices in DSA

Complexity Analysis

  • Time Complexity
  • Space Complexity
  • Big O, Big Omega, and Big Theta
  • Common Complexity Classes
  • Nested Loop Analysis
  • Recursive Complexity
  • Amortized Complexity
  • Constraints-Based Optimization

Math for DSA

  • Prime Numbers
  • GCD and LCM
  • Modular Arithmetic
  • Fast Exponentiation
  • Factorials and Combinations
  • Sieve of Eratosthenes
  • Bitwise Math Basics

Core Data Structures

  • Arrays: basics, traversal, prefix sum, difference array, Kadane's algorithm, two pointers, sliding window, and 2D matrix problems
  • Strings: frequency counting, palindrome checks, anagrams, substrings, subsequences, compression, KMP, Rabin-Karp, and Z algorithm
  • Linked List: singly, doubly, circular, insertion, deletion, reversal, middle node, cycle detection, and merging
  • Stack: valid parentheses, next greater element, monotonic stack, min stack, and expression conversion
  • Queue: circular queue, deque, priority queue, monotonic queue, sliding window maximum, and BFS
  • Hashing: hash map, hash set, frequency map, two sum, group anagrams, prefix sum with hashmap, and collisions
  • Heap and Priority Queue: min heap, max heap, heapify, top K, merge K sorted lists, and median from data stream

Core Algorithms

  • Searching: linear search, binary search, lower bound, upper bound, binary search on answer, rotated array search, and 2D matrix search
  • Sorting: bubble sort, selection sort, insertion sort, merge sort, quick sort, heap sort, counting sort, radix sort, and bucket sort
  • Recursion: base case, recursive case, recursion tree, call stack, array recursion, string recursion, and multiple recursive calls
  • Backtracking: subsets, permutations, combinations, N Queens, Sudoku solver, rat in a maze, word search, and pruning
  • Greedy Algorithms: activity selection, fractional knapsack, jump game, gas station, interval scheduling, merge intervals, and proof basics
  • Divide and Conquer

Trees and Graphs

  • Trees: binary tree, preorder, inorder, postorder, level order, height, diameter, LCA, and serialization
  • Binary Search Tree: insert, search, delete, validate BST, floor, ceil, kth smallest, kth largest, balanced BST, AVL tree, and red-black tree basics
  • Trie: insert, search, delete, prefix search, autocomplete, word dictionary, longest common prefix, and space optimization
  • Graphs: adjacency matrix, adjacency list, DFS, BFS, connected components, cycle detection, bipartite graph, topological sorting, SCC, bridges, and articulation points
  • Shortest Path Algorithms: BFS shortest path, Dijkstra, Bellman-Ford, Floyd-Warshall, 0-1 BFS, and multi-source BFS
  • Minimum Spanning Tree: Kruskal, Prim, Union-Find, path compression, and union by rank or size

Dynamic Programming

  • DP intuition
  • Memoization
  • Tabulation
  • 1D DP
  • 2D DP
  • Fibonacci pattern
  • Climbing stairs pattern
  • House robber pattern
  • Coin change
  • Knapsack
  • Longest common subsequence
  • Longest increasing subsequence
  • Matrix chain multiplication
  • DP on strings
  • DP on grids
  • DP on trees
  • DP with bitmasking
  • Space optimization

Advanced DSA

  • Bit Manipulation
  • Segment Tree
  • Lazy Propagation
  • Fenwick Tree
  • Sparse Table
  • Ordered Set and Map
  • LRU Cache
  • Sweep Line
  • Coordinate Compression
  • Meet in the Middle
  • Game Theory Basics

Problem-Solving Patterns

  • Two Pointers
  • Sliding Window
  • Fast and Slow Pointers
  • Prefix Sum
  • Hash Map Lookup
  • Monotonic Stack
  • Binary Search on Answer
  • BFS Level Order
  • DFS Recursion
  • Backtracking Template
  • DP State Design
  • Greedy Choice
  • Heap Top K
  • Union-Find Components

Best way to use this roadmap

Start with complexity analysis, then learn arrays and strings deeply before jumping into advanced topics. For every topic, first write the brute force solution, then optimize it, then explain why the optimized version is better.

The goal is not to memorize solutions. The goal is to recognize patterns, explain tradeoffs, and write clean code under constraints.