Subsets
Every number is taken, then left out. A call generateSubSets(ci) decides nums[ci]: it adds it to currentList, goes deeper, removes it again (the backtrack) and goes deeper without it. In the box, the number in hand is copied down into currentList and flies back when it is removed. In the tree a box shows the list a call starts from, a branch shows the number taken or skip, and every leaf adds one subset.