Skip to content

Commit

Permalink
update content
Browse files Browse the repository at this point in the history
  • Loading branch information
labuladong committed Aug 27, 2023
1 parent a28709a commit dff9cbf
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 2 deletions.
6 changes: 4 additions & 2 deletions 算法思维系列/回溯算法详解修订版.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,11 @@

回溯算法是什么?解决回溯算法相关的问题有什么技巧?如何学习回溯算法?回溯算法代码是否有规律可循?

其实回溯算法和我们常说的 DFS 算法非常类似,本质上就是一种暴力穷举算法。回溯算法和 DFS 算法的细微差别是:**回溯算法是在遍历「树枝」,DFS 算法是在遍历「节点」**,本文就是简单提一下,你有个印象就行了。等你看了 [手把手刷二叉树(纲领篇)](https://labuladong.github.io/article/fname.html?fname=二叉树总结)[图论算法基础](https://labuladong.github.io/article/fname.html?fname=图) 之后就能深刻理解这句话的含义了。
其实回溯算法和我们常说的 DFS 算法非常类似,本质上就是一种暴力穷举算法。回溯算法和 DFS 算法的细微差别是:回溯算法是在遍历「树枝」,DFS 算法是在遍历「节点」,本文就是简单提一下,你有个印象就行了。等你看了 [手把手刷二叉树(纲领篇)](https://labuladong.github.io/article/fname.html?fname=二叉树总结)[图论算法基础](https://labuladong.github.io/article/fname.html?fname=图) 之后就能深刻理解这句话的含义了。

废话不多说,直接上回溯算法框架,解决一个回溯问题,实际上就是一个决策树的遍历过程,站在回溯树的一个节点上,你只需要思考 3 个问题:
**抽象地说,解决一个回溯问题,实际上就是遍历一棵决策树的过程,树的每个叶子节点存放着一个合法答案。你把整棵树遍历一遍,把叶子节点上的答案都收集起来,就能得到所有的合法答案**

站在回溯树的一个节点上,你只需要思考 3 个问题:

1、路径:也就是已经做出的选择。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@ N 叉树的遍历框架,找出来了吧?你说,树这种结构重不重要
- [本站简介](https://labuladong.github.io/article/fname.html?fname=home)
- [环检测及拓扑排序算法](https://labuladong.github.io/article/fname.html?fname=拓扑排序)
- [目标和:背包问题的变体](https://labuladong.github.io/article/fname.html?fname=targetSum)
- [算法可视化功能简介(必读)](https://labuladong.github.io/article/fname.html?fname=可视化简介)
- [算法学习和心流体验](https://labuladong.github.io/article/fname.html?fname=心流)
- [算法时空复杂度分析实用指南](https://labuladong.github.io/article/fname.html?fname=时间复杂度)
- [题目不让我干什么,我偏要干什么](https://labuladong.github.io/article/fname.html?fname=nestInteger)
Expand Down

0 comments on commit dff9cbf

Please sign in to comment.