| 1 | Start recursion | 0 | [] | Call backtrack(0, []) | [] |
| 2 | Include nums[0]=1 | 1 | [1] | Call backtrack(1, [1]) | [] |
| 3 | Include nums[1]=2 | 2 | [1, 2] | Call backtrack(2, [1, 2]) | [] |
| 4 | Include nums[2]=3 | 3 | [1, 2, 3] | Reached end, add [1, 2, 3] | [[1, 2, 3]] |
| 5 | Exclude nums[2]=3 | 3 | [1, 2] | Reached end, add [1, 2] | [[1, 2, 3], [1, 2]] |
| 6 | Exclude nums[1]=2 | 2 | [1] | Call backtrack(2, [1]) | [[1, 2, 3], [1, 2]] |
| 7 | Include nums[2]=3 | 3 | [1, 3] | Reached end, add [1, 3] | [[1, 2, 3], [1, 2], [1, 3]] |
| 8 | Exclude nums[2]=3 | 3 | [1] | Reached end, add [1] | [[1, 2, 3], [1, 2], [1, 3], [1]] |
| 9 | Exclude nums[0]=1 | 1 | [] | Call backtrack(1, []) | [[1, 2, 3], [1, 2], [1, 3], [1]] |
| 10 | Include nums[1]=2 | 2 | [2] | Call backtrack(2, [2]) | [[1, 2, 3], [1, 2], [1, 3], [1]] |
| 11 | Include nums[2]=3 | 3 | [2, 3] | Reached end, add [2, 3] | [[1, 2, 3], [1, 2], [1, 3], [1], [2, 3]] |
| 12 | Exclude nums[2]=3 | 3 | [2] | Reached end, add [2] | [[1, 2, 3], [1, 2], [1, 3], [1], [2, 3], [2]] |
| 13 | Exclude nums[1]=2 | 2 | [] | Call backtrack(2, []) | [[1, 2, 3], [1, 2], [1, 3], [1], [2, 3], [2]] |
| 14 | Include nums[2]=3 | 3 | [3] | Reached end, add [3] | [[1, 2, 3], [1, 2], [1, 3], [1], [2, 3], [2], [3]] |
| 15 | Exclude nums[2]=3 | 3 | [] | Reached end, add [] | [[1, 2, 3], [1, 2], [1, 3], [1], [2, 3], [2], [3], []] |
| 16 | End recursion | - | - | All subsets generated | [[1, 2, 3], [1, 2], [1, 3], [1], [2, 3], [2], [3], []] |