DSA Study Plan
Complexity Analysis
| Subtopic | Done |
|---|---|
| Big O notation | |
| Time and space complexity | |
| Best, average, and worst-case scenarios |
Fundamental Data Structures
-
Arrays and Strings
| Subtopic | Done |
|---|---|
| Insertion, deletion, traversal | |
| String manipulation techniques |
-
Linked Lists
| Subtopic | Done |
|---|---|
| Singly Linked List | |
| Doubly Linked List | |
| Circular Linked List | |
| Common operations and use cases |
-
Stacks and Queues
| Subtopic | Done |
|---|---|
| LIFO vs. FIFO principles | |
| Implementation using arrays and linked lists |
Trees
-
Binary Trees
| Subtopic | Done |
|---|---|
| Tree terminology (nodes, edges, height, depth) | |
| Traversals methods (pre-order, in-order, post-order) |
-
Binary Search Trees
| Subtopic | Done |
|---|---|
| Properties of BST | |
| Operations on BST (insertion, deletion, search) |
-
Balanced Binary Trees
| Subtopic | Done |
|---|---|
| AVL Trees | |
| Red-Black Trees | |
| Importance of tree balancing |
Advanced Data Structures
-
Heaps
| Subtopic | Done |
|---|---|
| Min-heaps and max-heaps | |
| Heap operations | |
| Priority queues |
-
Hash Tables
| Subtopic | Done |
|---|---|
| Hash functions | |
| Collision resolution strategies (chaining, open addressing) | |
| Load factor and resizing |
Graphs
-
Graph Theory Basics
| Subtopic | Done |
|---|---|
| Definitions (vertices, edges, adjacency) | |
| Directed vs. undirected graphs |
-
Graph Representation
| Subtopic | Done |
|---|---|
| Adjacency matrix | |
| Adjacency list |
-
Graph Traversal Algorithms
| Subtopic | Done |
|---|---|
| Depth-first search (DFS) | |
| Breadth-first search (BFS) |
-
Shortest Path Algorithms
| Subtopic | Done |
|---|---|
| Dijkstra’s algorithm | |
| Bellman-Ford algorithm |
Sorting and Searching Algorithms
-
Sorting Algorithms
| Subtopic | Done |
|---|---|
| Bubble Sort | |
| Selection Sort | |
| Insertion Sort | |
| Merge Sort | |
| Quick Sort | |
| Heap Sort | |
| Radix Sort |
-
Searching Algorithms
| Subtopic | Done |
|---|---|
| Linear Search | |
| Binary Search | |
| Search in trees and graphs |
Algorithm Design Techniques
-
Recursion
| Subtopic | Done |
|---|---|
| Understanding recursive functions | |
| Tail recursion |
-
Divide and Conquer
| Subtopic | Done |
|---|---|
| Concept and applications | |
| Master theorem for complexity |
-
Dynamic Programming
| Subtopic | Done |
|---|---|
| Principles and memoization | |
| Classic problems (Fibonacci sequence, knapsack problem) |
-
Greedy Algorithms
| Subtopic | Done |
|---|---|
| Strategy and examples | |
| When to use greedy vs. dynamic programming |
Advanced Topics
-
Backtracking Algorithms
| Subtopic | Done |
|---|---|
| Concept and problem-solving | |
| N-Queens problem, sudoku solver |
-
Advanced Data Structures
| Subtopic | Done |
|---|---|
| Tries | |
| Segment trees | |
| Disjoint sets (Union-Find) |
-
Algorithm Complexity Classes
| Subtopic | Done |
|---|---|
| P vs. NP | |
| NP-Complete problems |