关于递归回溯与DFS的关系:
回溯是深度优先搜索中的一种情况,而深度优先搜索的实现是用递归。
深度优先搜索是递归实现的,是要搜索整个二叉树的,在这个搜索的基础上,再加点回溯/剪枝的操作就是这一类排列组合的题了,是这个关系
DFS 是一个劲的往某一个方向搜索,而回溯算法建立在 DFS 基础之上的,但不同的是在搜索过程中,达到结束条件后,恢复原来状态,回溯上一层,再次搜索。因此回溯算法与 DFS 的区别就是有无状态重置
何时使用回溯算法: 当问题需要 "回头",以此来查找出所有的解的时候,使用回溯算法。即满足结束条件或者发现不是正确路径的时候(走不通),要撤销选择,回退到上一个状态,继续尝试,直到找出所有解为止
图片出处:C++ 总结了回溯问题类型 带你搞懂回溯算法(大量例题) - 子集 - 力扣(LeetCode) (leetcode-cn.com)