^ operator, 412
Abelson, Hal, 223
abstract class, 80–81, 313–314, 323
abstract data type, 62
priority queue, 361
sorted map, 428
abstract methods, 80
AbstractBinaryTree class, 319–320, 323, 325, 330, 339, 341, 342
AbstractHashMap class, 406, 422–424
abstraction, 62
AbstractMap class, 384, 406–407, 408, 422
AbstractPriorityQueue class, 364–365, 366
AbstractSortedMap class, 406, 430, 466
AbstractTree class, 313–316, 323, 330, 339–342
access frequency, 294
accessor method, 5
activation record, see frame
acyclic graph, 615
adaptable priority queue, 390–392, 658, 659
adapter design pattern, 233, 245
Adel'son-Vel'skii, Georgii, 479, 530
Aggarwal, Alok, 709
Aho, Alfred, 256, 305, 530, 610
Ahuja, Ravindra, 686
amortization, 205, 266–269, 376, 672–675
ancestor, 310
antisymmetric property, 363
Apache Commons, 448
arithmetic operators, 24
arithmetic progression, 71, 268
Arnold, Ken, 57
ArrayDeque class, 251
ArrayIndexOutOfBounds exception, 20, 33, 84, 87
ArrayList class, 260–261, 263–265, 283–285, 290
ArrayQueue class, 242–244, 302
Arrays class, 112, 114, 139, 175
ArrayStack class, 230–232, 300
associative array, 402
big-Theta, 167
Baeza-Yates, Ricardo, 530, 572, 709
BalanceableBinaryTree class, 476–478
base class, 64
base type, 4
Bellman, Richard, 610
best-fit algorithm, 692
BFS, see breadth-first search
biconnected graph, 681
big-Theta notation, 167
binary search, 196–197, 203–204, 429–432, 563
binary search tree, 338, 460–478
rotation, 472
trinode restructuring, 473
array-based representation, 331–332
complete, 370
improper, 317
level, 321
proper, 317
BinaryTree interface, 319
bipartite graph, 681
bit vector, 456
Boyer, Robert, 610
Boyer-Moore algorithm, 578–581
Brassard, Gilles, 188
breadth-first tree traversal, 336, 341–342
brute force, 576
B-tree, 704
bubble-sort, 304
buffer overflow attack, 20
Burger, Doug, 709
Carlsonn, Svante, 400
implicit, 29
catch, 82
ceiling function, 163
central processing unit (CPU), 151
ChainHashMap class, 406, 424–425
character, 17
checked exception, 86
Chen, Wen-Chin, 458
Chernoff bound, 570
child class, see subclass
circularly linked list, 128–131, 246
Clarkson, Kenneth, 572
base, 64
child, 64
nested, 96
outer, 96
parent, 64
sub, 64
super, 64
class diagram, 47
Cloneable interface, 79, 141, 144, 302, 303, 353
clustering, 419
coding, 46
Cole, Richard, 610
Collection interface, 288
collections, see Java collections framework
collision resolution, 411, 417–419
Comer, Douglas, 709
comparability property, 363
Comparator interface, 363, 538
complete binary tree, 370
complete graph, 678
composition design pattern, 91, 295
compression function, 411, 416
concrete methods, 80
ConcurrentSkipListMap class, 436
connected components, 615, 635, 638
constructor, 14
continue statement, 37
contradiction, 178
contrapositive, 178
core memory, 695
Cornell, Gary, 57
CPU, 151
CRC cards, 47
CreditCard class, 41–43, 47, 50–51, 65–68, 88–89
Crochemore, Maxime, 610
Crosby, Scott, 458
cubic function, 160
cuckoo hashing, 456
currentTimeMillis method, 113, 151
cyber-dollar, 266–267, 495–498, 673
cycle, 615
directed, 615
cyclic-shift hash code, 413–414
DAG, see directed acyclic graph
data packets, 304
de Morgan's law, 178
debugging, 46
decryption, 115
degree of a vertex, 613
denial-of-service attack, 421
depth-first search (DFS), 631–639
linked-list implementation, 250
Deque interface, 288
descendant, 310
brute force, 576
divide-and-conquer, 532–536, 544–545
greedy method, 597
DFS, see depth-first search
Di Battista, Giuseppe, 358, 686
diameter, 355
dictionary, see map
directed acyclic graph, 647–649
disk usage, 198–201, 204–205, 345
divide-and-conquer, 532–536, 544–545
division method for hash codes, 416
dot operator, 7
double hashing, 419
double-ended queue, see deque
doubly linked list, 125, 132–137
DoublyLinkedList class, 135–137, 250, 271, 276
down-heap bubbling, 374
shrinking, 269
dynamic dispatch, 68
edge, 310
destination, 613
endpoint, 613
incident, 613
multiple, 614
origin, 613
outgoing, 613
parallel, 614
self-loop, 614
edge of a graph, 612
edge relaxation, 653
edit distance, 608
element uniqueness problem, 174–175, 215
encapsulation, 62
encryption, 115
endpoints, 613
enum, 22
equivalence relation, 138
erasure, 140
Euclidean norm, 56
Euler tour of a graph, 677, 681
Euler tour tree traversal, 348–349, 358
evolvability, 61
checked, 86
unchecked, 86
exponential function, 161–162, 209–210
expression tree, 318
external-memory algorithm, 695–707
external-memory sorting, 705–707
factorial function, 191–192, 202, 690
factory method pattern, 325, 477
FavoritesListMTF class, 298, 399
Fibonacci heap, 659
Fibonacci series, 73, 180, 186, 216–217, 480
field, 5
FIFO, see first-in, first-out
File class, 200
file system, 198–201, 310, 345
final modifier, 11
first-fit algorithm, 692
first-in, first-out (FIFO)
protocol, 238, 255, 336, 360, 699–700
Flajolet, Philippe, 188
Flanagan, David, 57
flowchart, 31
Floyd-Warshall algorithm, 644–646, 686
forest, 615
fractal, 193
fragmentation of memory, 692
free list, 692
Gamma, Erich, 101
garbage collection, 232, 693–694
mark-sweep, 693
Gauss, Carl, 159
geometric progression, 72, 267
geometric sum, 162
Gonnet, Gaston, 400, 530, 572, 709
Goodrich, Michael, 709
Gosling, James, 57
Graham, Ronald, 686
mixed, 613
simple, 614
strongly connected, 615
Guava library, 448
Guibas, Leonidas, 530
clustering, 419
collision, 411
double hashing, 419
linear probing, 418
quadratic probing, 419
hashing
cuckoo, 456
power-of-two-choices, 457
header sentinel, 132
bottom-up construction, 380–384
HeapAdaptablePriorityQueue class, 392–394
HeapAdaptablePriorityQueue class, 659
HeapPriorityQueue class, 377–378, 382
height of a tree, 315–316, 471
Hell, Pavol, 686
Hennessy, John, 709
heuristic, 297
hierarchy, 64
Hoare, C. A. R., 572
Holmes, David, 57
Hopcroft, John, 256, 305, 530, 686
Horner's method, 187
Horstman, Cay, 57
Huang, Bing-Chao, 572
I/O complexity, 701
identifier, 2
IllegalArgumentException, 85, 87
immutable, 18
implicit cast, 29
import statement, 45
in-degree, 613
incoming edges, 613
IndexOutOfBoundsException, 259
infix notation, 356
multiple, 79
single, 66
inorder tree traversal, 337, 341, 473
insertion-sort, 110–111, 293–294, 387, 561
integrated development environment (IDE), 16, 49
internal memory, 695
Internet, 304
inverted file, 456
isomorphism, 352
JáJá, Joseph, 358
Jarník, , 686
Java collections framework, 251, 288–292, 384, 445–448
Java Virtual Machine (JVM), 688–693
javadoc, 50
Jones, Richard, 709
Josephus problem, 246
Karger, David, 686
Klein, Philip, 686
Kleinberg, Jon, 572
Klink, Alexander, 458
Knuth, Donald, 148, 188, 305, 358, 400, 458, 530, 572, 610, 686, 709
Knuth-Morris-Pratt algorithm, 582–585
Kosaraju, S. Rao, 686
Kruskal, Joseph, 686
Langston, Michael, 572
last-in, first-out (LIFO) protocol, 226, 228
lazy iterator, 284
LCS, see longest common subsequence
leaf of a tree, 310
least recently used (LRU) protocol, 699–700
Lecroq, Thierry, 610
Lesuisse, R., 223
level in a tree, 321
Leveson, Nancy, 101
LIFO, see last-in, first-out
linear function, 158
linear probing, 418
linearity of expectation, 565
linked list, 122–137, 233, 245
circularly linked, 128–131, 246
doubly linked, 125, 132–137, 250, 276–280
singly linked, 122–127, 233, 245
LinkedBinaryTree class, 325–330, 466, 476–477
LinkedHashMap class, 454
LinkedList class, 251, 288, 289, 290
LinkedPositionalList class, 276–280, 286–287, 620
LinkedQueue class, 245, 341, 541, 549
Lins, Rafael, 709
Liskov substitution principle, 68
Liskov, Barbara, 68, 101, 256, 305
list
List interface, 258–259, 284, 288
literal, 23
Littman, Michael, 572
live objects, 693
locality of reference, 297, 697
log-star function, 675
longest common subsequence, 601–604
looking-glass heuristic, 578
lookup table, 410
loop invariant, 181
lowest common ancestor, 355
Magnanti, Thomas, 686
main memory, 695
Map interface, 406
mark-sweep algorithm, 693
matrix, 118
maximal independent set, 682
McDiarmid, Colin, 400
McIlroy, Douglas, 572
Megiddo, Nimrod, 572
member of a class, 5
memory address, 688
memory allocation, 692
memory heap, 691
memory hierarchy, 695
mergeable heap, 530
abstract, 80
concrete, 80
signature, 12
minimum spanning tree, 662–675
Prim-Jarnik algorithm, 664–666
mixin, 79
modularity, 62
Moore, J. Strother, 610
Morris, James, 610
Morrison, Donald, 610
move-to-front heuristic, 297–299
MST, see minimum spanning tree
multiple inheritance, 79
Multiply-Add-and-Divide (MAD), 416
Munro, J. Ian, 400
n-log-n function, 158
narrowing conversion, 88
natural join, 304
natural ordering, 363
nested class, 96
nested loops, 159
next-fit algorithm, 692
node, 309
ancestor, 310
child, 309
descendant, 310
external, 310
internal, 310
leaf, 310
parent, 309
root, 309
sibling, 310
node of a graph, 612
NoSuchElementException, 86, 87, 240, 251, 282
Number class, 89
NumberFormatException, 28, 84, 85, 87
Object class, 66, 91, 138, 141
object-oriented design, 60–101
open addressing, 418
operand stack, 690
order statistic, 563
Orlin, James, 686
out-degree, 613
outer class, 96
outgoing edge, 613
override, 64
p-norm, 56
parameter passing, 13
parent class, 64
parent node, 309
parenthetic string representation, 346
compression, 675
directed, 615
simple, 615
Boyer-Moore algorithm, 578–581
Knuth-Morris-Pratt algorithm, 582–585
Rabin-Karp algorithm, 609
Patterson, David, 709
permutation, 191
Peters, Tim, 562
polymorphism, 68
polynomial hash code, 413, 609
portability, 61
Position interface, 274, 313, 325
PositionalList interface, 275, 293, 295
postorder tree traversal, 335
power function, 209
power-of-two-choices hashing, 457
Pratt, Vaughan, 610
PredatoryCreditCard, 65–68, 88–89
prefix code, 595
prefix of a string, 575
preorder tree traversal, 334
Prim, Robert, 686
Prim-Jarnik algorithm, 664–666
primitive operations, 154
primitive type, 4
ADT, 361
sorted list implementation, 368–369
unsorted list
priority search tree, 400
private modifier, 10
ProbeHashMap class, 406, 426–427
program counter, 689
progression
Fibonacci, 73
pseudocode, 48
pseudorandom number generator, 113–114, 437
public modifier, 9
Pugh, William, 458
quadratic function, 158
quadratic probing, 419
linked-list implementation, 245
Queue interface, 239, 240, 288
java.util.Queue interface, 384
Rabin, Michael, 609
Rabin-Karp algorithm, 609
Ramachandran, Vijaya, 358
randomization, 421, 437, 442–444, 551–552, 564–565
randomized quick-select, 564
randomized quick-sort, 551
recurrence equation, 203, 540, 565, 705
recursion, 190–220, 314–316, 334–335, 344–349, 461–462, 532, 540, 563, 690
binary, 211
Reed, Bruce, 400
reference type, 6
reference variable, 6
reflexive property, 363
rehashing, 420
robustness, 60
root objects, 693
root of a tree, 309
round-robin scheduling, 128
running time, 150
RuntimeException, 87
Samet, Hanan, 709
Schaffer, Russel, 400
scheduling, 399
search engine, 594
selection-sort, 386
self-loop, 614
separate chaining, 417
sequential search, 196
Sharir, Micha, 358
short-circuit evaluation, 33
tree, 661
sieve algorithm, 453
single inheritance, 66
singly linked list, 122–127, 233, 245
SinglyLinkedList class, 126–127, 140, 144
Sleator, Daniel, 530
snapshot iterator, 284, 320, 340
sort method, 175
abstract data type, 428
SortedMap interface, 406
SortedPriorityQueue class, 368–369
SortedTableMap class, 406, 429–432
sorting, 110, 385–389, 532–560
insertion-sort, 110–111, 293, 387
selection-sort, 386
stable, 559
Tim-sort, 562
space usage, 150
spanning tree, 615, 630, 634, 635, 662
sparse array, 303
stable sorting, 559
linked-list implementation, 233
static modifier, 10
Stephen, Graham, 610
string
mutable, 18
prefix, 575
suffix, 575
StringBuilder class, 18, 152, 269
strong typing, 76
strongly connected components, 638
strongly connected graph, 615
subgraph, 615
subsequence, 601
subtree, 310
suffix of a string, 575
summation, 161
geometric, 162
superclass, 64
Sussman, Gerald, 223
Sussman, Julie, 223
Tardos, Éva, 572
template method pattern, 81, 446, 475
testing, 46
three-way set disjointness, 173–174
throw statement, 85
Tim-sort, 562
total order, 363
tower-of-twos, 675
Towers of Hanoi, 222
trailer sentinel, 132
transitive property, 363
binary, see binary tree
binary search, see binary
search tree
binary tree representation, 354
child node, 309
decision, 317
edge, 310
expression, 318
external node, 310
internal node, 310
leaf, 310
level, 321
linked structure, 333
node, 309
ordered, 311
parent node, 309
path, 310
red-black, see red-black tree
root node, 309
splay, see splay tree
(2, 4), see (2, 4) tree
TreeMap class, 406
triangulation, 608
compressed, 590
trinode restructuring, 473, 482, 513
try-catch statement, 82
Tsakalidis, Athanasios, 530
Turner, Clark, 101
two-dimensional array, 118
type, 5
type inference, 93
Ullman, Jeffrey, 256, 305, 530
unchecked exception, 86
unit testing, 54
UnsortedPriorityQueue class, 366–367
UnsortedTableMap class, 406, 408–409, 424
up-heap bubbling, 372
update method, 5
van Leeuwen, Jan, 686
vertex of a graph, 612
virtual memory, 697
Vishkin, Uzi, 358
visibility, 9
Vitter, Jeffrey, 188, 458, 709
Wälde, Julian, 458
Wallach, Dan, 458
Warshall, Stephen, 686
widening conversion, 88
Williams, J. W. J., 400
Wood, Derick, 305
worst-fit algorithm, 692