
1. Data Structure
1.1. Linear DS
1.1.1. Array
1.1.2. Strings
1.1.3. Linked List
1.1.4. Stack
1.1.5. Queue
1.1.6. Matrix
1.2. Non Linear DS
1.2.1. Tree
1.2.2. Binary Search Tree
1.2.3. Heap
1.2.4. Graph
1.2.5. Trie
1.2.6. Segment Tree
1.2.7. Disjoint Sets
1.3. Bit Manipulation
2. Algorithms
2.1. Analysis
2.1.1. Asympotic Notation
2.1.1.1. Big O
2.1.1.2. Omega
2.1.1.3. Theta
2.1.2. Time and Space Complexity
2.1.3. Recursion
2.1.4. Searching
2.1.5. Sorting
2.1.6. Hashing
2.2. Design
2.2.1. Greedy Design
2.2.1.1. Huffman Coding
2.2.1.2. Knapsack Problem
2.2.1.3. Spanning Tree
2.2.1.4. Job Sequencing
2.2.2. Divide and Conqure
2.2.2.1. Max and Min Problem
2.2.2.2. Matrix Multiplication
2.2.2.3. Searching and Sorting
2.2.3. Graph Search
2.2.3.1. DFS and BFS
2.2.4. Minimum Spanning Tree
2.2.4.1. Prime's Algorithm
2.2.4.2. Kruskal's Algorithm
2.2.5. Shortest Path
2.2.5.1. Dijkstra's SPA
2.2.5.2. Bellman-Ford SPA
2.2.6. Dynamic Programming
2.2.6.1. 0/1 Knapsack
2.2.6.2. Matrix Chain
2.2.6.3. Subset Sum
2.2.6.4. Multistage Graph
2.2.6.5. Egg Dropping Problem