nodes = partial solutions, edges = choices
{1}
{1,2}
take 1
{ }
{2}
skip 1
{ }
leaves reached
(none yet)
The mental model behind every backtracking problem
▸1tree = solution space:2 root = empty solution3 edge = one decision4 node = partial solution5 leaf = complete solution (valid or dead)6explore(node):7 if rule already broken: prune subtree // cut, do not recurse8 else for each edge: explore(child)9 collect valid leaves
state
- examplesubsets of [1, 2]