\r\n
Chapter 1 Review of Java \r\n\r\n1.1 Object-Oriented Programming \r\n1.2 The Java Programming Language \r\n1.3 Variables and Objects \r\n1.4 Primitive Types \r\n1.5 Flow Control \r\n1.6 Classes \r\n1.7 Modifiers \r\n1.8 The String Class \r\n1.9 The Math Class \r\n\r\nChapter 2 Review of Arrays \r\n\r\n2.1 Properties of Arrays \r\n2.2 Duplicating an Array \r\n2.3 The Arrays Class \r\n2.4 The Sequential Search Algorithm \r\n2.5 The Binary Search Algorithm \r\n2.6 The Vector Class \r\n\r\nChapter 3 Advanced Java \r\n\r\n3.1 Inheritance \r\n3.2 Polymorphism \r\n3.3 Type Conversion \r\n3.4 The Object Class \r\n3.5 Abstract Classes \r\n3.6 Interfaces \r\n3.7 Packages \r\n3.8 Exception Handling \r\n\r\nChapter 4 Recursion \r\n\r\n4.1 The Basis and Recursive Parts of Recursion \r\n4.2 Tracing a Recursive Call \r\n4.3 The Recursive Binary Search Algorithm \r\n4.4 Binomial Coefficients \r\n4.5 The Euclidean Algorithm \r\n4.6 Inductive Proof of Correctness \r\n4.7 Complexity Analysis of Recursive Algorithms \r\n4.8 Dynamic Programming \r\n4.9 The Towers of Hanoi \r\n4.10 Mutual Recursion \r\n\r\nChapter 5 Collections \r\n\r\n5.1 The Java Collections Framework \r\n5.2 The Collection Interface \r\n5.3 The AbstractCollection Class \r\n5.4 A Bag Class \r\n5.5 The Iterator Interface \r\n\r\nChapter 6 Stacks \r\n\r\n6.1 The Java Stack Class \r\n6.2 Applications of Stacks \r\n6.3 Removing Recursion \r\n\r\nChapter 7 Queues \r\n\r\n7.1 A Framework for Queues \r\n7.2 A Contiguous Implementation \r\n7.3 A Linked Implementation \r\n7.4 Simulation with Queues \r\n\r\nChapter 8 Lists \r\n\r\n8.1 The java.util.List Interface \r\n8.2 Implementations of the java.util.List Interface \r\n8.3 The AbstractList and AbstractSequentialList Classes \r\n8.4 List Iterators \r\n8.5 The ArrayList Class \r\n8.6 The LinkedList Class \r\n8.7 Independent List Iterators \r\n\r\nChapter 9 Trees \r\n\r\n9.1 Tree Definitions \r\n9.2 Decision Trees and Transition Diagrams \r\n9.3 Ordered Trees \r\n9.4 Tree Traversal Algorithms for Ordered Trees \r\n\r\nChapter 10 Binary Trees \r\n\r\n10.1 Definitions \r\n10.2 Counting Binary Trees \r\n10.3 Full Binary Trees \r\n10.4 Identity, Equality, and Isomorphism \r\n10.5 Complete Binary Trees \r\n10.6 Binary Tree Traversal Algorithms \r\n10.7 Expression Trees \r\n10.8 A BinaryTree Class \r\n10.9 Implementations of the Traversal Algorithms \r\n10.10 Forests \r\n\r\nChapter 11 Search Trees \r\n\r\n11.1 Multiway Search Trees \r\n11.2 B-Trees \r\n11.3 Binary Search Trees \r\n11.4 Performance Characteristics of Binary Search Trees \r\n11.5 AVL Trees \r\n11.6 An AVLTree Class \r\n\r\nChapter 12 Heaps and Priority Queues \r\n\r\n12.1 Heaps \r\n12.2 The Natural Mapping \r\n12.3 Insertion into a Heap \r\n12.4 Removal from a Heap \r\n12.5 A PriorityQueue Class \r\n12.6 The Java Comparator Interface \r\n12.7 A Direct Implementation \r\n\r\nChapter 13 Sorting \r\n\r\n13.1 The Java Arrays.sort() Method \r\n13.2 The Bubble Sort \r\n13.3 The Selection Sort \r\n13.4 The Insertion Sort \r\n13.5 The Shell Sort \r\n13.6 The Merge Sort \r\n13.7 The Quick Sort \r\n13.8 The Heap Sort \r\n13.9 The Speed Limit for Comparison Sorts \r\n13.10 The Radix Sort \r\n13.11 The Bucket Sort \r\n\r\nChapter 14 Tables \r\n\r\n14.1 The Java Map Interface \r\n14.2 The HashMap Class \r\n14.3 Java Hash Codes \r\n14.4 Hash Tables \r\n14.5 Hash Table Performance \r\n14.6 Collision Resolution Algorithms \r\n14.7 Separate Chaining \r\n14.8 Applications \r\n14.9 The TreeMap Class \r\n\r\nChapter 15 Sets \r\n\r\n15.1 Mathematical Sets \r\n15.2 The Java Set Interface \r\n15.3 The Java AbstractSet Class \r\n15.4 The Java HashSet Class \r\n15.5 The Java TreeSet Class \r\n\r\nChapter 16 Graphs \r\n\r\n16.1 Simple Graphs \r\n16.2 Graph Terminology \r\n16.3 Paths and Cycles \r\n16.4 Isomorphic Graphs \r\n16.5 The Adjacency Matrix for a Graph \r\n16.6 The Incidence Matrix for a Graph \r\n16.7 The Adjacency List for a Graph \r\n16.8 Digraphs \r\n16.9 Paths in a Digraph \r\n16.10 Weighted Digraphs and Graphs \r\n16.11 Euler and Hamiltonian Paths and Cycles \r\n16.12 Dijkstra's Algorithm \r\n16.13 Graph Traversal Algorithms \r\n\r\nAppendix A Essential Mathematics \r\n\r\nA.1 The Floor and Ceiling Function \r\nA.2 Logarithms \r\nA.3 Complexity Classes \r\nA.4 The First Principle of Mathematical Induction \r\nA.5 The Second Principle of Mathematical Induction \r\nA.6 Geometric Series \r\nA.7 Summation Formulas \r\nA.8 Harmonic Numbers \r\nA.9 Stirling's Formula \r\nA.10 The Fibonacci Numbers \r\nA.11 The Golden Mean \r\nA.12 The Euclidean Algorithm \r\nA.13 The Catalan Numbers \r\n\r\nAppendix B From C++ to Java \r\n\r\nAppendix C Java Development Environments \r\n\r\nC.1 The Windows Command Prompt \r\nC.2 Visual Cafe from Webgain \r\n\r\nAppendix D References \r\n\r\nIndex