Data Structures & Algorithms
Complete catalog of 99 interactive algorithm visualizers. Browse by data structure category or filter by difficulty.
Explore the universal backtracking template: watch the state space tree expand, witness constraint pruning terminate invalid branches early, and trace how choices are systematically undone.
Count the number of permutations where either the number at position i is divisible by i, or i is divisible by the number, using recursive backtracking and divisibility pruning.
Find all root-to-leaf paths in a binary tree in any order using depth-first search and backtracking.
Find all unique combinations of candidate numbers that sum to target using recursive backtracking on the decision tree.
Find all unique combinations in candidates that sum to target. Each number may only be used once, using duplicate skipping and branch pruning.
Given two integers n and k, return all possible combinations of k numbers chosen from the range [1, n] using recursive backtracking on the decision tree.
Generate all combinations of well-formed parentheses using recursive backtracking with open and close count pruning.
Generate all possible letter combinations that the input phone digits could represent using keypad mapping and recursive backtracking.
Partition a string such that every substring of the partition is a palindrome using backtracking and two-pointer palindrome validation.
Generate all possible permutations of an array of distinct integers using recursive backtracking and a visited set.
Generate all possible valid IPv4 addresses by partitioning a string into four octets (0-255 without leading zeros) using recursive backtracking.
Generate all possible subsets (the power set) of a distinct integer array using recursive backtracking on the decision tree.
Generate all unique subsets from an integer array that may contain duplicates using sorting, duplicate skipping, and recursive backtracking.
Determine if a target word exists in a 2D grid of characters by constructing a path of adjacent cells without reusing any cell.
