01Algorithm Analysis
Running time, basic-operation counting, mathematical notation, asymptotic dominance, Big-O, Omega, Theta, and worst-, average-, and amortized-case analysis.
02Lists, Searching & Sorting
Abstract data types, dynamic arrays, binary search, selection sort, insertion sort, merge sort, quicksort, in-place algorithms, and performance comparisons.
03Stacks
The stack ADT, Python implementations, public and private attributes, preconditions, recursive merge sort, balanced parentheses, and next-greater-element problems.
04Queues & Priority Queues
List- and stack-based queues, round-robin scheduling, priority queues, and recursive queue operations.
05Linked Lists
Node and linked-list classes, traversal, indexed access, mutation, cycle detection, and complexity comparisons with array-backed lists.
06Trees
Recursive tree definitions, visualization, traversal orders, mutation, and the relationship between recursive structures and recursive algorithms.
07Binary Search Trees
Search, inorder traversal, insertion, deletion, correctness, and efficiency under balanced and unbalanced shapes.
08Heaps
Max-heap structure, list representation, build-heap, bubble-up and bubble-down, extraction, insertion, equal priorities, and heap sort.
09Graphs
Graph representations, recursive connectivity, cycle detection, paths, trees, spanning trees, and visited-set reasoning.
10Dictionaries & Hash Tables
Hash functions, closed and open addressing, collision handling, linked-list buckets, probing, and implementation tradeoffs.
11Tries
Node design, insertion, exact and prefix search, deletion, running time, and comparisons with hash tables.
12Red-Black Trees
Balanced-search-tree invariants, rotations, insertion repair, deletion repair, and logarithmic operation guarantees.