DSA Roadmap
Basic Programming
Conditional Statement
Loops
Data Types and Variables
Jump Statements
Arrays and Strings
Basic iteration and operations
Sorting
Defining and Input
Bubble Sort
Selection Sort
Quick Sort
Insertion Sort
Merge Sort
Time and Space Complexity
2 Different Routes (Both need to taken at some point)
Algorithms
Data Structures (Pre req.)
Dynamic Programming
Greedy Algorithms
Array and Strings named algorithms
Tabulation
Backtracking
Questions
2SUM and 3SUM Questions
DNF Algorithm
Kadane's Algorithm
Moore's Voting algorithm (for k=2 and generalized)
KMP Algorithm
Generalized algorithms (i,e juggling, negative marking and so on...)
2 Dimensional DP
N Dimensional DP
1 Dimensional DP
Object Oriented Programming
Functions
Basic use of Functions
Recursion
Time and Space Complexities of recursion (Taylor's theorem)
How recursion works (Try to trace it manually)
Backtracking
Encapsulation and Abstraction
Polymorphism
Inheritance
Overloading
Inheritance
Access Specifiers
Recurssion
Class, methods and contructors
Overriding
Memoization
Data Structures
Stack and Queues
Binary Trees
Linked List
Graphs
Hare and Tortoise Algorithm
Merge Sort for Linked List
Types of Linkedlist
Class and Basic Operations
Tons of Questions
Implementation (using array and linked list)
Notations and interconversion (i.e prefix, infix and postfix)
Stack (LIFO)
Standard Problems (like largest histogram, rainwater trapping)
Queue (FIFO)
Stack using queue and vise-versa
Questions
DFS Traversal (preorder, inorder and postorder)
BFS Level order traversal
Class and methods
Common terms (Height, diameter, depth) calculations
Standard Questions (like LCA)
BST
Heaps
Condition for BST
Properties of BST (like inroder is sorted) and construction using inroder or other traversals.
Insertion and deletion
Balancing BST
Standard questions (like flatting a BST)
Heapify Algorithm
Heap Sort
Implementation and array equivalence
Questions
Condition for Heaps
BFS
Cycle Detection using DFS and BFS
DFS
Standard Questions (like min moves by knight, wired connections)
Intro and Representations (Adjacency List, Adjacency matrix)
Named Algorithms
Dijkstra's Algorithm
MST using Prims Algorithm
Topological Sort
MST using Kruskal's Algorithms (also learn DSU)
Bellman Ford Algorithm
Floyd Warshall Algorithm