Skip to main content

Data Structures & Algorithms Roadmap

Pick a Language

JavaScript
Python
Java
C++
C#
Ruby
GO
Rust

Programming Fundamentals

Language Syntax
Control Structures
Functions
OOP Basics
Pseudo Code

Data Structures

Data Structures

Basic Data Structures

Arrays
Linked Lists
Stacks
Queues
Hash Tables

Algorithmic Complexity

Time and Space Complexity
Common Runtimes
Asymptotic Notation
Extra Topics

Sorting Algorithms

Bubble Sort
Selection Sort
Insertion Sort
Merge Sort
Quick Sort
Heap Sort
Counting Sort
Radix Sort
Bucket Sort

Searching Algorithms

Linear Search
Binary Search
Jump Search
Interpolation Search
Exponential Search

Recursion

Introduction
Recursion Techniques
Recursion Problems

Tree Data Structures

Introduction
Tree Traversals
Search Algorithms
Tree Problems

Graph Data Structures

Introduction
Search Algorithms
Shortest Path Algos
Minimum Spanning Tree

Advanced Data Structures

Trie
Segment Trees
Fenwick Tree
Suffix Tree
Bloom Filter
Skip List
Disjoint Set (Union-Find)

Complex Data Structures

B/B+ Trees
Skip List
ISAM
2-3 trees

Indexing

Introduction
Linear Indexing
Tree-Based Indexing

Problem Solving Techniques

Brute Force
Greedy Algorithms
Divide and Conquer
Dynamic Programming
Backtracking
Branch and Bound
Randomized Algorithms
Recursion
Bit Manipulation
Two Pointers
Sliding Window

Platforms for Practice

LeetCode
HackerRank
Codeforces
AtCoder
TopCoder
CodeChef
SPOJ
Project Euler