Appendix D — Appendix D: Glossary

Appendix D: Glossary

Quick-reference definitions for terms used in this book. Cross-references in italic.

Abstract class — a class with at least one pure virtual function. Cannot be instantiated directly.

Adjacency list — graph representation where each vertex has a list of its neighbors. O(V + E) space.

Adjacency matrix — graph representation as a V×V grid. O(V²) space.

Amortized analysis — averaging the cost of operations over a sequence; e.g., vector::push_back is amortized O(1).

AVL tree — self-balancing BST with the strict invariant that left/right subtree heights differ by at most 1.

Backtracking — DFS plus undoing state on return. Used for constraint satisfaction (8-queens, sudoku).

Balance factor — for an AVL node, height(left) - height(right).

Base case — the smallest version of a recursive problem, solved directly.

Big-O — upper bound on growth rate. f(n) = O(g(n)) if f ≤ c·g for large n.

Big-Omega (Ω) — lower bound on growth rate.

Big-Theta (Θ) — tight bound. Both O and Ω.

BFS — Breadth-First Search. Layer-by-layer traversal using a queue. O(V + E).

BST — Binary Search Tree. Left subtree all less, right all greater.

Class — a user-defined type with fields and methods.

Compile — translate source code to machine code (or intermediate code).

Const correctness — using const to mark read-only parameters and methods.

Copy constructorT(const T&). Creates a new object from an existing one.

Copy assignmentT& operator=(const T&). Replaces the contents of an existing object.

DAG — Directed Acyclic Graph. Used for topological sort.

Deep copy — copies the contents a pointer points to, not just the pointer.

Destructor~T(). Runs when an object’s lifetime ends.

DFS — Depth-First Search. Recursive (or stack-based) traversal that goes deep before backtracking. O(V + E).

DFA — Deterministic Finite Automaton. Recognizes regular languages.

Dijkstra’s algorithm — shortest path in a graph with non-negative edge weights. O((V + E) log V).

DP — Dynamic Programming. Memoized recursion with overlapping subproblems and optimal substructure.

Edit distance — minimum number of insert/delete/replace edits to convert one string to another.

Friend — a function or class granted access to another class’s private members.

Hash function — maps a key to an array index. Good ones distribute uniformly.

Hash table — array-backed map using a hash function. Average O(1) lookup.

Heap — complete binary tree with the heap property (parent ≥ children for max-heap). Backed by an array.

Heapify — build a heap from an arbitrary array in O(n).

Inductive hypothesis — assumption that the statement holds for k; used to prove k+1.

Inheritance — declaring one class as derived from another, gaining its members.

In-order traversal — visit left, then node, then right. On a BST, produces sorted output.

Iterator — object that traverses a container, exposing * to read, ++ to advance, != to compare.

Leaf — a node with no children.

Linked list — chain of nodes, each pointing to the next.

Load factor — items / buckets in a hash table. Triggers rehash above ~0.7.

LCS — Longest Common Subsequence. 2D DP, O(mn).

LIS — Longest Increasing Subsequence. O(n²) DP or O(n log n) patience-sorting.

Master Theorem — closed-form for solving recurrences of the form T(n) = aT(n/b) + f(n).

Member initializer list — colon syntax for initializing fields in a constructor.

Memoization — top-down DP: recursive solution + cache.

Merge sort — divide-and-conquer sort. O(n log n), O(n) space, stable.

MST — Minimum Spanning Tree. Prim’s or Kruskal’s algorithm.

NFA — Nondeterministic Finite Automaton. Equivalent in power to DFA.

NP — class of problems whose solutions can be verified in polynomial time.

NP-complete — the “hardest” problems in NP. 3-SAT, vertex cover, etc.

Nullptr — typed null pointer (C++11). Prefer over NULL.

Open addressing — collision resolution by probing for the next empty slot.

Operator overloading — defining operators (+, ==, <<) for user types.

P — class of problems solvable in polynomial time.

Pointer — variable holding a memory address.

Polymorphism — runtime dispatch of methods based on object’s actual type.

Post-order traversal — visit left, right, then node. Used for tree deletion.

Pre-order traversal — visit node, then left, then right. Used for tree serialization.

Prefix code — code where no codeword is a prefix of another. Required for Huffman.

Priority queue — abstract data type with push and pop-min (or pop-max). Usually backed by a heap.

Pure virtualvirtual void f() = 0;. Forces derived classes to implement.

Quicksort — divide-and-conquer sort. Average O(n log n), worst O(n²), in place.

RAII — Resource Acquisition Is Initialization. Tying resource lifetime to object lifetime.

Rule of Three — if you write any of (destructor, copy ctor, copy assignment), write all three.

Rule of Five — Rule of Three + move ctor + move assignment (C++11).

Recurrence relation — equation expressing T(n) in terms of smaller values.

Recursion — function that calls itself.

Red-black tree — self-balancing BST using node colors. STL map/set.

Reference — alias for another variable. int& r = x;.

Rotation — restructuring operation for self-balancing trees (right, left, double).

Separate chaining — collision resolution by storing a list of items per bucket.

Shallow copy — copies pointers, not what they point to.

Sift-down — restore heap property by moving a value toward leaves.

Sift-up — restore heap property by moving a value toward the root.

Singleton — pattern guaranteeing exactly one instance of a class.

Stack frame — per-call activation record on the call stack.

Strategy pattern — replacing type-switches with polymorphism via injected behavior.

Strong induction — assume P(j) for all j ≤ k; prove P(k+1).

Subset construction — algorithm converting an NFA to an equivalent DFA.

Template — generic type/function parameterized by a type.

Topological sort — linear ordering of a DAG where every edge u → v has u before v.

Tree — connected undirected graph with no cycles, or rooted hierarchical structure.

Turing machine — abstract computation model with a tape, head, and transition function.

Union-find (DSU) — data structure tracking disjoint sets with find and unite. Used in Kruskal’s.

Vector — C++ dynamic array.

Virtual function — method that can be overridden in derived classes; dispatched via the vtable.

Vtable — per-class table of function pointers used for virtual dispatch.

Weak induction — assume P(k); prove P(k+1).