Chapter 0 Preface¶
Chapter 1 Introduction for Data Structures and Algorithms Courses¶
Chapter 2 Biographies¶
Chapter 3 Programming Tutorials¶
- 3.1. Command Line Basics
- 3.2. Parsing Command Line Parameters In Your Progam
- 3.3. Using Parameters in Eclipse
- 3.4. Installing the Web-CAT Submission Plug-in for Eclipse
- 3.5. Common Debugging Methods
- 3.6. Debugging In Eclipse
- 3.7. Reading Input (from Files or Otherwise)
- 3.8. Random Access Files In Java
- 3.9. JUnit Testing And You
- 3.10. Writing JUnit Tests
- 3.11. Code Coverage In JUnit
- 3.12. Testing
- 3.13. Testing for Code Coverage
- 3.14. Another Example
- 3.15. Bowling Example
Chapter 4 Design I¶
Chapter 5 Introduction to Pointers in Java¶
- 5.1. Pointers Chapter Introduction
- 5.2. Basic References
- 5.3. Pointers Syntax
- 5.4. Local Memory
- 5.5. Heap Memory
- 5.6. Link Nodes
- 5.7. Additional Practice Exercises
Chapter 6 Mathematical Background¶
Chapter 7 Searching I¶
Chapter 8 Algorithm Analysis¶
- 8.1. Chapter Introduction
- 8.2. Problems, Algorithms, and Programs
- 8.3. Comparing Algorithms
- 8.4. Best, Worst, and Average Cases
- 8.5. Faster Computer, or Faster Algorithm?
- 8.6. Asymptotic Analysis and Upper Bounds
- 8.7. Lower Bounds and \(\Theta\) Notation
- 8.8. Calculating Program Running Time
- 8.9. Analyzing Problems
- 8.10. Common Misunderstandings
- 8.11. Multiple Parameters
- 8.12. Space Bounds
- 8.13. Code Tuning and Empirical Analysis
- 8.14. Algorithm Analysis Summary Exercises
- 8.15. Algorithm Analysis Summary Exercises
Chapter 9 Linear Structures¶
- 9.1. Chapter Introduction: Lists
- 9.2. The List ADT
- 9.3. Array-Based List Implementation
- 9.4. Linked Lists
- 9.5. Comparison of List Implementations
- 9.6. Doubly Linked Lists
- 9.7. List Element Implementations
- 9.8. Stacks
- 9.9. Linked Stacks
- 9.10. Freelists
- 9.11. Implementing Recursion
- 9.12. Queues
- 9.13. Linked Queues
- 9.14. Linear Structure Summary Exercises
Chapter 10 Recursion¶
- 10.1. Introduction
- 10.2. Writing a recursive function
- 10.3. Code Completion Practice Exercises
- 10.3.1. Introduction
- 10.3.2. Recursion Programming Exercise: Largest
- 10.3.3. Recursion Programming Exercise: Multiply
- 10.3.4. Recursion Programming Exercise: GCD
- 10.3.5. Recursion Programming Exercise: log
- 10.3.6. Recursion Programming Exercise: Cummulative Sum
- 10.3.7. Recursion Programming Exercise: Add odd positions
- 10.3.8. Recursion Programming Exercise: Sum Of the Digits
- 10.3.9. Recursion Programming Exercise: Count Characters
- 10.4. Writing More Sophisticated Recursive Functions
- 10.5. Recursive Sorting
- 10.6. Harder Code Completion Practice Exercises
- 10.7. Writing Practice Exercises
- 10.8. Tracing Recursive Code
- 10.9. Tracing Practice Exercises
- 10.10. Summary Exercises
Chapter 11 Design II¶
Chapter 12 Binary Trees¶
- 12.1. Binary Trees Chapter Introduction
- 12.2. Binary Trees
- 12.3. Binary Tree as a Recursive Data Structure
- 12.4. The Full Binary Tree Theorem
- 12.5. Binary Tree Traversals
- 12.6. Implementing Tree Traversals
- 12.7. Information Flow in Recursive Functions
- 12.7.1. Information Flow in Recursive Functions
- 12.7.2. Binary Tree Set Depth Exercise
- 12.7.3. Collect-and-return
- 12.7.4. Binary Tree Check Sum Exercise
- 12.7.5. Binary Tree Leaf Nodes Count Exercise
- 12.7.6. Binary Tree Sum Nodes Exercise
- 12.7.7. Combining Information Flows
- 12.7.8. Binary Tree Check Value Exercise
- 12.7.9. Combination Problems
- 12.7.10. Binary Tree Height Exercise
- 12.7.11. Binary Tree Get Difference Exercise
- 12.7.12. Binary Tree Has Path Sum Exercise
- 12.8. Binary Tree Node Implementations
- 12.9. Composite-based Expression Tree
- 12.10. Binary Tree Space Requirements
- 12.11. Binary Search Trees
- 12.12. Dictionary Implementation Using a BST
- 12.13. Binary Tree Guided Information Flow
- 12.14. Multiple Binary Trees
- 12.15. A Hard Information Flow Problem
- 12.16. Array Implementation for Complete Binary Trees
- 12.16. Heaps
- 12.24. Huffman Coding
- 12.19. Trees versus Tries
- 12.20. Proof of Optimality for Huffman Coding
- 12.21. Binary Tree Chapter Summary
Chapter 13 Sorting¶
- 13.1. Chapter Introduction: Sorting
- 13.2. Sorting Terminology and Notation
- 13.3. Insertion Sort
- 13.4. Bubble Sort
- 13.5. Selection Sort
- 13.6. The Cost of Exchange Sorting
- 13.7. Optimizing Sort Algorithms with Code Tuning
- 13.8. Shellsort
- 13.9. Mergesort Concepts
- 13.10. Implementing Mergesort
- 13.11. Quicksort
- 13.12. Heapsort
- 13.13. Binsort
- 13.14. Radix Sort
- 13.15. An Empirical Comparison of Sorting Algorithms
- 13.16. Lower Bounds for Sorting
- 13.17. Sorting Summary Exercises
Chapter 14 File Processing¶
- 14.19. File Processing and Buffer Pools
- 14.19.1. File Processing and Buffer Pools
- 14.19.1.1. Programmer’s View of Files
- 14.19.1.2. Java File Functions
- 14.19.1.3. Primary vs. Secondary Storage
- 14.19.1.4. Comparisons
- 14.19.1.5. Golden Rule of File Processing
- 14.19.1.6. Disk Drives
- 14.19.1.7. Sectors
- 14.19.1.8. Terms
- 14.19.1.9. Seek Time
- 14.19.1.10. Other Factors
- 14.19.1.11. (Old) Disk Spec Example
- 14.19.1.12. Disk Access Cost Example (1)
- 14.19.1.13. Disk Access Cost Example (2)
- 14.19.1.14. How Much to Read?
- 14.19.1.15. Newer Disk Spec Example
- 14.19.1.16. Buffers
- 14.19.1.17. Buffer Pools
- 14.19.1.18. Buffer Pools
- 14.19.1.19. Organizing Buffer Pools
- 14.19.1.20. LRU
- 14.19.1.21. Dirty Bit
- 14.19.1.22. Bufferpool ADT: Message Passing
- 14.19.1.23. Bufferpool ADT: Buffer Passing
- 14.19.1.24. Design Issues
- 14.19.1.25. Some Goals
- 14.19.1.26. Improved Interface
- 14.19.1.27. Improved Interface (2)
- 14.19.1.28. External Sorting
- 14.19.1.29. Model of External Computation
- 14.19.1.30. Key Sorting
- 14.19.1.31. Simple External Mergesort (1)
- 14.19.1.32. Simple External Mergesort (2)
- 14.19.1.33. Simple External Mergesort (3)
- 14.19.1.34. Problems with Simple Mergesort
- 14.19.1.35. A Better Process
- 14.19.1.36. Breaking a File into Runs
- 14.19.1.37. Replacement Selection (1)
- 14.19.1.38. Replacement Selection (2)
- 14.19.1.39. RS Example
- 14.19.1.40. Snowplow Analogy (1)
- 14.19.1.41. Snowplow Analogy (2)
- 14.19.1.42. Problems with Simple Merge
- 14.19.1.43. Multiway Merge (1)
- 14.19.1.44. Multiway Merge (2)
- 14.19.1.45. Limits to Multiway Merge (1)
- 14.19.1.46. Limits to Multiway Merge (2)
- 14.19.1.47. General Principles
- 14.19.1. File Processing and Buffer Pools
- 14.2. Primary versus Secondary Storage
- 14.3. Disk Drives
- 14.4. Buffer Pools
- 14.5. The Programmer's View of Files
- 14.6. External Sorting
Chapter 15 Hashing¶
Chapter 16 Memory Management¶
Chapter 17 Indexing¶
Chapter 18 General Trees¶
Chapter 19 Graphs¶
Chapter 20 Spatial Data Structures¶
Chapter 21 Senior Algorithms Course¶
Chapter 22 Searching¶
Chapter 23 Lower Bounds¶
Chapter 24 Number Problems¶
Chapter 25 Probabilistic Algorithms¶
Chapter 26 Search Structures¶
Chapter 27 Miscellaneous¶
- 27.1. The Sparse Matrix
- 27.2. Dynamic Programming
- 27.3. Amortized Analysis
- 27.4. 0/1 Knapsack Problem
- 27.5. Edit Distance
- 27.6. KMP String Search Algorithm
- 27.7. Boyer-Moore String Search Algorithm
- 27.8. Rabin-Karp String Search Algorithm [Draft]
- 27.9. General Tree Implementations
- 27.10. K-ary Tree Implementations
Chapter 28 Limits to Computing¶
- 28.1. Limits to Computing
- 28.2. Reductions
- 28.3. NP-Completeness
- 28.4. Circuit Satisfiability
- 28.5. Formula Satisfiability
- 28.6. 3-CNF Satisfiability
- 28.7. The Clique Problem
- 28.8. The Independent Set Problem
- 28.9. The Vertex Cover Problem
- 28.10. The Hamiltonian Cycle Problem
- 28.11. The Traveling Salesman Problem
- 28.12. NP-Completeness Proofs
- 28.13. Reduction of Circuit SAT to SAT
- 28.14. Reduction of SAT to 3-SAT
- 28.15. Reduction of 3-SAT to Clique
- 28.16. Reduction of Clique to Independent Set
- 28.17. Reduction of Independent Set to Vertex Cover
- 28.18. Reduction of 3-SAT to Hamiltonian Cycle
- 28.19. Reduction of Hamiltonian Cycle to Traveling Salesman
- 28.20. Coping with NP-Complete Problems
- 28.21. Unsolveable Problems
- 28.22. Turing Machines
Chapter 29 Appendix¶
Chapter 30 Slides¶
- 30.1. Data Structures and Algorithm Analysis Introduction
- 30.2. Stacks and Queues
- 30.2.1. Container Class Design Issues
- 30.2.2. Stacks
- 30.2.3. Stack ADT
- 30.2.4. Array-Based Stack (1)
- 30.2.5. Array-Based Stack (2)
- 30.2.6. Linked Stack
- 30.2.7. Queues
- 30.2.8. Queue Implementation (1)
- 30.2.9. Queue Implementation (2)
- 30.2.10. Queue Implementation (3)
- 30.2.11. Circular Queue (1)
- 30.2.12. Circular Queue (2)
- 30.3. Program Management
- 30.3.1. Program Management
- 30.3.1.1. Project Management
- 30.3.1.2. Scheduling
- 30.3.1.3. Historical Data
- 30.3.1.4. Historical Data 2
- 30.3.1.5. Historical Data 3
- 30.3.1.6. What is the Mechanism?
- 30.3.1.7. How to fail at implementing your project:
- 30.3.1.8. How to succeed at implementing
- 30.3.1.9. How to Survive
- 30.3.1.10. Being Organized 1
- 30.3.1.11. Being Organized 2
- 30.3.1.12. Memory Can't Handle It
- 30.3.1.13. Spread Work Over Time
- 30.3.1.14. Incremental Development
- 30.3.1.15. Milestones
- 30.3.1.16. Working with a Partner (1)
- 30.3.1.17. Working with a Partner (2)
- 30.3.1. Program Management
- 30.4. Memory Management
- 30.4.1. Memory Management
- 30.4.1.1. Memory Management
- 30.4.1.2. Memory Manager ADT
- 30.4.1.3. Implementation Issues
- 30.4.1.4. Dynamic Storage Allocation
- 30.4.1.5. Fragmentation
- 30.4.1.6. Managing the Free Blocks
- 30.4.1.7. Selecting a Free Block
- 30.4.1.8. Sequential Fit Methods
- 30.4.1.9. Example
- 30.4.1.10. .
- 30.4.1.11. Buddy Method
- 30.4.1.12. Buddy Method Example
- 30.4.1.13. .
- 30.4.1.14. Failure Policies
- 30.4.1. Memory Management
- 30.5. Hashing
- 30.5.1. Hashing
- 30.5.1.1. Hashing (1)
- 30.5.1.2. Hashing (2)
- 30.5.1.3. Simple Examples
- 30.5.1.4. Collisions (1)
- 30.5.1.5. Collisions (2)
- 30.5.1.6. Hash Functions (1)
- 30.5.1.7. Hash Functions (2)
- 30.5.1.8. Simple Mod Function
- 30.5.1.9. Binning
- 30.5.1.10. Mod vs. Binning
- 30.5.1.11. Mid-Square Method
- 30.5.1.12. Strings Function: Character Adding
- 30.5.1.13. String Folding
- 30.5.1.14. Open Hashing
- 30.5.1.15. Bucket Hashing (1)
- 30.5.1.16. Bucket Hashing (2)
- 30.5.1.17. Closed Hashing
- 30.5.1.18. Collision Resolution
- 30.5.1.19. Insertion
- 30.5.1.20. Search
- 30.5.1.21. Probe Function
- 30.5.1.22. Linear Probing (1)
- 30.5.1.23. Linear Probing (2)
- 30.5.1.24. Problem with Linear Probing
- 30.5.1.25. Linear Probing by Steps (1)
- 30.5.1.26. Linear Probing by Steps (2)
- 30.5.1.27. Pseudo-Random Probing (1)
- 30.5.1.28. Pseudo-Random Probing (2)
- 30.5.1.29. Quadratic Probing
- 30.5.1.30. Double Hashing (1)
- 30.5.1.31. Double Hashing (2)
- 30.5.1.32. Analysis of Closed Hashing
- 30.5.1.33. Deletion
- 30.5.1.34. Tombstones (1)
- 30.5.1.35. Tombstones (2)
- 30.5.1. Hashing
- 30.6. Quick Hashing
- 30.7. Algorithm Analysis
- 30.7.1. Algorithm Analysis
- 30.7.1.1. Algorithm Efficiency
- 30.7.1.2. How to Measure Efficiency?
- 30.7.1.3. Problems, Algorithms, Programs
- 30.7.1.4. Growth Rate Example (1)
- 30.7.1.5. Growth Rate Example (2)
- 30.7.1.6. Growth Rate Graph
- 30.7.1.7. Best, Worst, Average Cases
- 30.7.1.8. Which Analysis to Use?
- 30.7.1.9. Faster Computer or Algorithm?
- 30.7.1.10. Faster Computer or Algorithm? 2
- 30.7.1.11. Asymptotic Analysis: Big-oh
- 30.7.1.12. Big-oh Notation (cont)
- 30.7.1.13. Big-Oh Examples
- 30.7.1.14. Big-Oh Examples (2)
- 30.7.1.15. A Common Misunderstanding
- 30.7.1.16. Big-Omega \(\Omega\)
- 30.7.1.17. Big-Omega Example
- 30.7.1.18. Theta Notation \(\Theta\)
- 30.7.1.19. A Common Misunderstanding
- 30.7.1.20. Simplifying Rules
- 30.7.1.21. Summary
- 30.7.1.22. .
- 30.7.1.23. Time Complexity Examples (1)
- 30.7.1.24. Time Complexity Examples (2)
- 30.7.1.25. Time Complexity Examples (3)
- 30.7.1.26. Time Complexity Examples (4)
- 30.7.1.27. Binary Search
- 30.7.1.28. Other Control Statements
- 30.7.1.29. Analyzing Problems
- 30.7.1.30. Analyzing Problems: Example
- 30.7.1.31. Space/Time Tradeoff Principle
- 30.7.1.32. Multiple Parameters
- 30.7.1.33. Space Complexity
- 30.7.1. Algorithm Analysis
- 30.8. JUnit Testing
- 30.8.1. Testing
- 30.8.2. JUnit testing and code coverage
- 30.8.3. Philosophy
- 30.8.4. A Bad test (1)
- 30.8.5. A Bad test (2)
- 30.8.6. Full test of output
- 30.8.7. Selective Testing of Output
- 30.8.8. What would be good testing for Project 1?
- 30.8.9. Models
- 30.8.10. What if your model is wrong?
- 30.8.11. Regression testing
- 30.9. Clean Code
- 30.10. Lists
- 30.10.1. Lists
- 30.10.1.1. Lists
- 30.10.1.2. List Implementation Concepts
- 30.10.1.3. List ADT (1)
- 30.10.1.4. List ADT (2)
- 30.10.1.5. List ADT (3)
- 30.10.1.6. List ADT Examples
- 30.10.1.7. List Find Function
- 30.10.1.8. Array-Based List Class (1)
- 30.10.1.9. Array-Based List Insert
- 30.10.1.10. Link Class
- 30.10.1.11. Linked List Position (1)
- 30.10.1.12. Linked List Position (2)
- 30.10.1.13. Linked List Position (3)
- 30.10.1.14. Linked List Class (1)
- 30.10.1.15. Linked List Class (2)
- 30.10.1.16. Insertion
- 30.10.1.17. Removal
- 30.10.1.18. Prev
- 30.10.1.19. Overhead
- 30.10.1.20. Comparison of Implementations
- 30.10.1.21. Space Comparison
- 30.10.1.22. Space Example
- 30.10.1.23. Freelist
- 30.10.1.24. Doubly Linked Lists
- 30.10.1.25. Doubly Linked Node (1)
- 30.10.1.26. Doubly Linked Insert
- 30.10.1.27. Doubly Linked Remove
- 30.10.1. Lists
- 30.11. SkipLists
- 30.12. Binary Trees Part 1
- 30.13. Binary Trees Part 2
- 30.13.1. Binary Trees Part 2
- 30.13.1.1. Full and Complete Binary Trees
- 30.13.1.2. Full Binary Tree Theorem (1)
- 30.13.1.3. Full Binary Tree Theorem (2)
- 30.13.1.4. Full Binary Tree Corollary
- 30.13.1.5. Dictionary
- 30.13.1.6. .
- 30.13.1.7. Dictionary (2)
- 30.13.1.8. Binary Search Trees
- 30.13.1.9. BST as a Dictionary (1)
- 30.13.1.10. BST as a Dictionary (2)
- 30.13.1.11. BST
findhelp
- 30.13.1.12. BST
inserthelp
- 30.13.1.13. BST
deletemax
- 30.13.1.14. BST
removehelp
- 30.13.1.15. .
- 30.13.1.16. BST Analysis
- 30.13.1. Binary Trees Part 2
- 30.14. Binary Trees Part 3
- 30.14.1. Binary Trees Part 3
- 30.14.1.1. Comparison (1)
- 30.14.1.2. Comparison (2)
- 30.14.1.3. KVpair
- 30.14.1.4. .
- 30.14.1.5. KVpair: Generics
- 30.14.1.6. .
- 30.14.1.7. Using the KVpair (1)
- 30.14.1.8. Binary Tree Implementation (1)
- 30.14.1.9. Binary Tree Implementation (2)
- 30.14.1.10. Inheritance (1)
- 30.14.1.11. Inheritance (2)
- 30.14.1.12. Inheritance (3)
- 30.14.1.13. Design Patterns
- 30.14.1.14. Composite (1)
- 30.14.1.15. Composite (2)
- 30.14.1.16. Composite (3)
- 30.14.1.17. Space Overhead (1)
- 30.14.1.18. Space Overhead (2)
- 30.14.1. Binary Trees Part 3
- 30.15. 2-3+ Trees
- 30.16. Heaps
- 30.17. Sorting Part 1
- 30.17.1. Sorting Part 1
- 30.17.1.1. Sorting
- 30.17.1.2. Insertion Sort
- 30.17.1.3. Initial Step
- 30.17.1.4. Analysis: Worst Case
- 30.17.1.5. Analysis: Best Case
- 30.17.1.6. Analysis: Average Case
- 30.17.1.7. Bubble Sort
- 30.17.1.8. Analysis
- 30.17.1.9. Selection Sort
- 30.17.1.10. Analysis
- 30.17.1.11. Summary
- 30.17.1.12. Code Tuning (1)
- 30.17.1.13. Exchange Sorting
- 30.17.1. Sorting Part 1
- 30.18. Sorting Part 2
- 30.18.1. Sorting Part 2
- 30.18.1.1. Shellsort
- 30.18.1.2. Shellsort (2)
- 30.18.1.3. Mergesort
- 30.18.1.4. Mergesort cost
- 30.18.1.5. Quicksort
- 30.18.1.6. Quicksort Partition
- 30.18.1.7. Quicksort Partition Cost
- 30.18.1.8. Quicksort Summary
- 30.18.1.9. Quicksort Worst Case
- 30.18.1.10. .
- 30.18.1.11. Quicksort Best Case
- 30.18.1.12. .
- 30.18.1.13. Quicksort Average Case
- 30.18.1.14. Optimizations for Quicksort
- 30.18.1.15. Heapsort
- 30.18.1.16. Heapsort Analysis
- 30.18.1.17. Binsort
- 30.18.1.18. Radix Sort: Linked List
- 30.18.1.19. .
- 30.18.1.20. Radix Sort: Array
- 30.18.1.21. Radix Sort Implementation
- 30.18.1.22. .
- 30.18.1.23. Radix Sort Analysis
- 30.18.1.24. Empirical Analysis
- 30.18.1.25. Sorting Lower Bound (1)
- 30.18.1.26. Sorting Lower Bound (2)
- 30.18.1. Sorting Part 2
- 30.19. File Processing and Buffer Pools
- 30.19.1. File Processing and Buffer Pools
- 30.19.1.1. Programmer’s View of Files
- 30.19.1.2. Java File Functions
- 30.19.1.3. Primary vs. Secondary Storage
- 30.19.1.4. Comparisons
- 30.19.1.5. Golden Rule of File Processing
- 30.19.1.6. Disk Drives
- 30.19.1.7. Sectors
- 30.19.1.8. Terms
- 30.19.1.9. Seek Time
- 30.19.1.10. Other Factors
- 30.19.1.11. (Old) Disk Spec Example
- 30.19.1.12. Disk Access Cost Example (1)
- 30.19.1.13. Disk Access Cost Example (2)
- 30.19.1.14. How Much to Read?
- 30.19.1.15. Newer Disk Spec Example
- 30.19.1.16. Buffers
- 30.19.1.17. Buffer Pools
- 30.19.1.18. Buffer Pools
- 30.19.1.19. Organizing Buffer Pools
- 30.19.1.20. LRU
- 30.19.1.21. Dirty Bit
- 30.19.1.22. Bufferpool ADT: Message Passing
- 30.19.1.23. Bufferpool ADT: Buffer Passing
- 30.19.1.24. Design Issues
- 30.19.1.25. Some Goals
- 30.19.1.26. Improved Interface
- 30.19.1.27. Improved Interface (2)
- 30.19.1.28. External Sorting
- 30.19.1.29. Model of External Computation
- 30.19.1.30. Key Sorting
- 30.19.1.31. Simple External Mergesort (1)
- 30.19.1.32. Simple External Mergesort (2)
- 30.19.1.33. Simple External Mergesort (3)
- 30.19.1.34. Problems with Simple Mergesort
- 30.19.1.35. A Better Process
- 30.19.1.36. Breaking a File into Runs
- 30.19.1.37. Replacement Selection (1)
- 30.19.1.38. Replacement Selection (2)
- 30.19.1.39. RS Example
- 30.19.1.40. Snowplow Analogy (1)
- 30.19.1.41. Snowplow Analogy (2)
- 30.19.1.42. Problems with Simple Merge
- 30.19.1.43. Multiway Merge (1)
- 30.19.1.44. Multiway Merge (2)
- 30.19.1.45. Limits to Multiway Merge (1)
- 30.19.1.46. Limits to Multiway Merge (2)
- 30.19.1.47. General Principles
- 30.19.1. File Processing and Buffer Pools
- 30.20. Indexing
- 30.20.1. Indexing
- 30.20.1.1. Indexing
- 30.20.1.2. Files and Indexing
- 30.20.1.3. Keys and Indexing
- 30.20.1.4. Linear Indexing (1)
- 30.20.1.5. Linear Indexing (2)
- 30.20.1.6. Tree Indexing (1)
- 30.20.1.7. Tree Indexing (2)
- 30.20.1.8. Tree Indexing (3)
- 30.20.1.9. Tree Indexing (4)
- 30.20.1.10. 2-3 Tree
- 30.20.1.11. 2-3 Tree Example
- 30.20.1.12. 2-3 Tree Insertion (1)
- 30.20.1.13. 2-3 Tree Insertion (2)
- 30.20.1.14. 2-3 Tree Insertion (3)
- 30.20.1.15. B-Trees (1)
- 30.20.1.16. B-Trees (2)
- 30.20.1.17. B-Tree Search
- 30.20.1.18. B+-Trees
- 30.20.1.19. B+-Tree Example
- 30.20.1.20. B+-Tree Insertion
- 30.20.1.21. B+-Tree Deletion (1)
- 30.20.1.22. B+-Tree Deletion (2)
- 30.20.1.23. B+-Tree Deletion (3)
- 30.20.1.24. .
- 30.20.1.25. B-Tree Space Analysis (1)
- 30.20.1.26. B-Tree Space Analysis (2)
- 30.20.1.27. B-Trees: The Big Idea
- 30.20.1. Indexing
- 30.21. Graphs
- 30.21.1. Graphs
- 30.21.1.1. Graphs
- 30.21.1.2. Paths, Cycles
- 30.21.1.3. Connected Components
- 30.21.1.4. Directed Graph Representation
- 30.21.1.5. Undirected Graph Representation
- 30.21.1.6. Representation Space Costs
- 30.21.1.7. Graph ADT
- 30.21.1.8. .
- 30.21.1.9. Visiting Neighbors
- 30.21.1.10. Graph Traversals
- 30.21.1.11. Graph Traversals (2)
- 30.21.1.12. Depth First Search (1)
- 30.21.1.13. Depth First Search (2)
- 30.21.1.14. Depth First Search (3)
- 30.21.1.15. Breadth First Search (1)
- 30.21.1.16. Breadth First Search (3)
- 30.21.1.17. Topological Sort
- 30.21.1.18. Depth-First Topological Sort (1)
- 30.21.1.19. Depth-First Topological Sort (1)
- 30.21.1.20. .
- 30.21.1.21. Queue-Based Topsort (1)
- 30.21.1.22. .
- 30.21.1.23. Queue-Based Topsort (2)
- 30.21.1.24. .
- 30.21.1.25. Shortest Paths Problems
- 30.21.1.26. Shortest Paths Definitions
- 30.21.1.27. Single-Source Shortest Paths
- 30.21.1.28. Dijkstra’s Algorithm Example
- 30.21.1.29. .
- 30.21.1.30. Dijkstra’s Implementation
- 30.21.1.31. Implementing minVertex
- 30.21.1.32. Approach 1
- 30.21.1.33. Approach 2
- 30.21.1.34. .
- 30.21.1.35. All-pairs Shortest Paths (1)
- 30.21.1.36. All-pairs Shortest Paths (2)
- 30.21.1.37. Floyd's Algorithm
- 30.21.1.38. Minimal Cost Spanning Trees
- 30.21.1.39. MST Example
- 30.21.1.40. Prim’s MST Algorithm
- 30.21.1.41. .
- 30.21.1.42. Implementation 1
- 30.21.1.43. Alternate Implementation
- 30.21.1.44. Kruskal’s MST Algorithm (1)
- 30.21.1.45. Kruskal’s MST Algorithm (2)
- 30.21.1.46. .
- 30.21.1.47. Kruskal’s MST Algorithm (3)
- 30.21.1. Graphs
- 30.22. General Trees
- 30.22.1. General Trees
- 30.22.1.1. General Trees
- 30.22.1.2. General Tree ADT
- 30.22.1.3. General Tree Traversal
- 30.22.1.4. Rep: Lists of Children
- 30.22.1.5. Rep: Dynamic Node (Array)
- 30.22.1.6. Rep: Dynamic Node (linked list)
- 30.22.1.7. Rep: Lift-Child/Right-Sibling
- 30.22.1.8. Serialization
- 30.22.1.9. Binary tree serialization
- 30.22.1.10. Alternate serialization
- 30.22.1.11. Bit Vector Serialization
- 30.22.1.12. General Tree Serialization
- 30.22.1. General Trees
- 30.23. Union/FIND
- 30.24. Huffman Coding