# 回溯

回溯算法的思路就是枚举路径，如果路径不满足条件时，进行回溯，尝试别的路径。

回溯算法的解决，就是一个决策树的遍历过程。回溯算法需要考虑三个问题：

1. 路径：即已经做出的选择。
2. 选择列表：就是当前可以做出的选择。
3. 结束条件：就是到达决策树的底部，无法再做选择的条件。

回溯算法的思路：

```
result =[]
def backtrack(路径,选择列表):
    if 满足结束条件:
        result.add(路径)
        return

    for 选择 in 选择列表:
        做选择
        backtrack(路径,选择列表)
        撤销选择
```
