1. 2.2 Queue
1.1. FIFO
1.2. Application
1.3. Linked List Queue
1.4. Array Queue
2. 3. Recursion
2.1. Definition
2.2. Application
2.3. Classification
2.4. Base condition
2.5. Recursive call
3. 4. Tree
3.1. Binary Search Tree (BS Tree)
3.1.1. Node (Left, Right)
3.1.2. Add node
3.1.3. Traverse (Pre-order, Post-Order, In-order)
3.1.4. Traverse (Breath First)
3.1.5. Search node
3.1.6. Remove node
3.2. Balanced Binary Tree
3.2.1. Definition (Height)
3.2.2. Simple Balance Algorithm
3.2.3. Rotate left
3.2.4. Rotate right
3.2.5. Double rotate
3.3. AVL Tree
3.3.1. Definition
3.3.2. Insert node
3.3.3. Remove node
3.4. Heap
3.4.1. Definition, Max heap, Min heap
3.4.2. Heap in Array
3.4.3. Build heap
3.4.4. Max/Min extractor
4. 6. Sorting
4.1. Insertion sort
4.2. Selection sort
4.3. Bubble sort
4.4. Heap sort
4.5. Quick sort
4.6. Merge sort
4.7. Radix sort
5. 8. Text Processing
6. 1. Linked List
6.1. Single Linked List
6.1.1. Node
6.1.2. Head & Taill
6.1.3. Add node
6.1.4. Remove node
6.1.5. Traverse
6.2. Double Linked list
6.2.1. Node
6.2.2. Back link
6.3. Circular linked list
6.3.1. Tail link
7. 2.1 Stack
7.1. LIFO
7.2. Application
7.3. Linked List Queue
7.4. Array Queue
8. 5. Graph
8.1. Definition
8.2. Application
8.3. Graph traversals
8.4. Graph representation / data structures
8.4.1. Adjacency matrix
8.4.2. Adjacency list
8.5. Shortest path
8.5.1. Dijsktra
8.5.2. Floyd
8.6. Eulerian Graphs
8.6.1. Conditions
8.6.2. Euler's cycle algorithm
8.7. Halminton
8.7.1. Definition
8.7.2. Back-tracking algorithm
8.8. Graph colouring
8.8.1. Definition
8.8.2. Algorithm
8.9. Minimum spaning tree
8.9.1. Prim
8.9.2. Kruskal