Acknowledgments
A Note to Readers
Chapter 1: Search Problems
Chapter 2: Exhaustive Search for an Informant
Chapter 3: Arrays and Indexes on a Criminal’s Farm
Chapter 4: Strings and Hidden Messages
Chapter 5: Binary Search for a Smuggler’s Ship
Chapter 6: Binary Search for Clues
Chapter 7: Adapting Algorithms for a Daring Escape
Chapter 8: Socks: An Interlude and an Introduction
Chapter 9: Backtracking to Keep the Search Going
Chapter 10: Picking Locks with Breadth-First Search
Chapter 11: Depth-First Search in an Abandoned Prison
Chapter 12: Cafeteria Stacks and Queues
Chapter 13: Stacks and Queues for Search
Chapter 14: Let’s Split Up: Parallelized Search
Chapter 15: Iterative Deepening Can Save Your Life
Chapter 16: Inverted Indexes: The Search Narrows
Chapter 17: A Binary Search Tree Trap
Chapter 18: Building Binary Search Ladders
Chapter 19: Binary Search Trees for Suspects
Chapter 20: Adding Suspects to the Search Tree
Chapter 21: The Binary Search Tree Property
Chapter 22: Tries for Paperwork
Chapter 23: Best-First Search: A Detective’s Most Trusted Tool
Chapter 24: Priority Queues for Investigations
Chapter 25: Priority Queues for Lock Picking
Chapter 26: Heuristics in Search
Chapter 27: Heaps in Politics and Academia
Chapter 28: Difficult Search Problems
Chapter 29: Search Termination
Epilogue
View the detailed Table of Contents (PDF)
View the Index (PDF)