本文内容来自于代码随想录https://www.programmercarl.com/
一棵树中的纵向遍历结束回到上一层的过程,比如:
这个过程通常回伴随恢复现场的过程。
void backtracking(参数) {
if (终止条件) {
存放结果;
return;
}
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
处理节点;
backtracking(路径,选择列表); // 递归
回溯,撤销处理结果(也叫做恢复现场)
}
}
在回溯算法中,通常通过剪枝操作进行优化。
一般是在 for 循环内部去判断,当前要递归的元素是否符合条件。比如,