1. IMPORTANT PROBLEM TYPES
1.1. SEARCHING
1.2. SORTING
1.3. STRING PROCESSING
1.4. GRAPH PROBLEMS
1.5. COMBINATIONAL PROBLEMS
2. MATHEMATICAL ANALYSIS OF RECURSIVE ALGORITHMS
2.1. MAXIMUM ELEMENTS
2.2. DISTINCT ELEMENTS
2.3. MATRIX MULTIPLICATION
3. FUNDAMENTAL DATA STRUCTURES
3.1. LINEAR DATA STRUCTURES
3.1.1. LINKED DATA STRUCTURE
3.1.1.1. SINGLY LINKED LIST
3.1.1.2. DOUBLY LINKED LIST
3.1.2. LIST
3.1.2.1. STACK
3.1.2.2. QUEUES
3.1.2.3. PRIORITY QUEUES
3.2. GRAPHS
3.2.1. UNDIRECTED
3.2.2. DIRECTED
3.2.3. WEIGHTED GRAPH
3.2.4. CYCLE
3.3. TREES
3.3.1. DEPTH OF VERTEX
3.3.2. HEIGHT OF TREE
3.3.3. ORDERED TREE
3.3.4. BINARY TREE
3.3.5. BINARY TREE SEARCH
3.3.6. ROOTED TREE
3.4. SETS
3.4.1. SET OPERATIONS
3.4.1.1. MEMBERSHIP
3.4.1.2. UNIONS
3.4.1.3. INTERSECTIONS
3.4.1.4. UNIONS
3.4.1.5. MEMBERSHIP
3.4.2. IMPLEMENTATIONS
3.4.2.1. BIT VECTOR
3.4.2.2. LIST
3.5. DICTIONARIES
3.5.1. SEARCHING
3.5.2. ADDING
3.5.3. DELETING
4. INTRODUCTION
4.1. ALGORITHMS
4.1.1. INPUT AND OUTPUT
4.1.2. DEFINITENESS
4.1.3. FINITENESS
4.1.4. EFFECTIVENESS
4.1.5. CORRECTNESS
4.2. ALGORITHM SPECIFICATION
4.2.1. SIMPLE ENGLISH
4.2.2. GRAPHICAL REPRESENTATION
4.2.3. PROGRAMMING LANGUAGES
4.3. RECURSIVE ALGORITHMS
4.3.1. EXAMPLES
4.3.1.1. FACTORIAL COMPUTATION
4.3.1.2. BINOMIAL COEFFICIENT COMPUTATION
4.3.1.3. TOWER OF HANOI
4.3.1.4. PERMUTATION GENERATOR
5. PERFORMANCE ANALYSIS
5.1. TIME COMPLEXITY
5.1.1. FIXED PART
5.1.2. VARIABLE PART
5.2. SPACE COMPLEXITY
5.2.1. METHOD-1(to introduce count variable)
5.2.2. METHOD-2(by building a step count table)
5.3. ANALYSIS FRAMEWORK
5.3.1. WORST CASE
5.3.2. BEST CASE
5.3.3. AVERAGE CASE