Backtracking is a systematic way to iterate through all the possible configurations of a search space. These configurations may represent all possible arrangements of objects(permutations) or all possible ways to building a collection of them(subsets).