Introduction. What's the Book About?
Mathematics Review.
A Brief Introduction to Recursion.
Generic Objects in Java.
Exceptions.
Input and Output.
Code Organization.
Algorithm Analysis. Mathematical Background.
Model.
What to Analyze.
Running Time Calculations.
Lists, Stacks, and Queues. Abstract Data Types (ADTs).
The List ADT.
The Stack ADT.
The Queue ADT.
Trees. Preliminaries.
Binary Trees.
The Search Tree ADT: Binary Search Trees.
AVL Trees.
Splay Trees.
Tree Traversals (Revisited).
B-Trees.
Hashing. General Idea.
Hash Function.
Separate Chaining.
Open Addressing.
Rehasing.
Extendible Hashing.
Priority Queues (Heaps). Model.
Simple Implementations.
Binary Heap.
Applications of Priority Queues.
d-heaps.
Leftist Heaps.
Skew Heaps.
Binomial Queues.
Sorting. Preliminaries.
Insertion Sort.
A Lower Bound for Simple Sorting Algorithms.
Shellsort.
Heapsort.
Mergesort.
Quicksort.
A General Lower Bound for Sorting.
Bucket Sort.
External Sorting.
The Disjoint Set ADT. Equivalence Relations.
The Dynamic Equivalence Problem.
Basic Data Structure.
Smart Union Algorithms.
Path Compression.
Worst Case for Union-by Rank and Path Compression.
An Application.
Graph Algorithms. Definitions.
Topological Sort.
Shortest-Path Algorithms.
Network Flow Problems.
Minimum Spanning Tree.
Applications of Depth-First Search.
Introduction to NP-Completeness.
Algorithm Design Techniques. Greedy Algorithms.
Divide and Conquer.
Dynamic Programming.
Randomized Algorithms.
Backtracking Algorithms.
Amortized Analysis. An Unrelated Puzzle.
Binomial Queues.
Skew Heaps.
Fibonacci Heaps.
Splay Trees.
Advanced Data Structures and Implementation. Top-Down Splay Trees.
Red Black Trees.
Deterministic Skip Lists.
AA-Trees.
Treaps.
k-d Trees.
Pairing Heaps.
Appendix A: Some Library Routines. Classes in Package java.lang.
Classes in Package java.io.
Classes in Package java.util.
Appendix B: The Collections Library. Introduction.
Basic Classes.
Lists.
Sets.
Maps.
Example: Generating a Concordance.
Example: Shortest Path Calculation. 0201357442T04062001