跳至内容
回溯实验室:用 C++ 看清搜索树的选择、返回与撤销

回溯实验室:用 C++ 看清搜索树的选择、返回与撤销

October 4, 2026

回溯学习从一个具体问题开始:递归返回以后,下一条分支到底从什么状态继续?

打开回溯实验室 →

直接看 LC131:分割 aabbaa 的完整搜索过程 →

动画从算法实际运行生成。可以播放、暂停、前后单步、拖动进度,也能跳到下一次返回或下一条答案。每步同步显示搜索树节点、当前调用链、path、递归深度、约束变量、已收集答案与对应C++代码行。

学习路线

顺序题目核心问题
01生成长度3的01串000到001之间发生了哪些返回与撤销?
02–03LC78子集、LC77组合在每个节点收集,还是到固定长度才收集?
04LC46全排列为什么每层都扫描全部下标,还要恢复used?
05–06LC90子集II、LC47全排列II同层去重为什么不阻止同一路径选两个相同值?
07–08LC39组合总和、LC40组合总和II从i还是i+1继续?为什么能够提前剪枝?
09LC131分割回文串一段是否合法与整棵树怎样遍历,分别由谁负责?
10LC79单词搜索失败分支如何恢复visited?成功又怎样向上传递?
11LC132分割回文串II为什么求最优值不必列出全部方案?

重点案例:分割aabbaa

示例包含单字符、aa、bb、abba和整个字符串等不同长度的回文段,共10种合法切分。完整动画保留非回文候选被拒绝的步骤,而不只展示成功路径。

可以修改输入为1–8个小写字母,重新生成搜索树,比较不同字符串带来的分支。默认完整代码以aabbaa运行;改动动画输入后,也请修改C++的main输入。

每课都有具体例子、逐步过程、变量释义、可运行C++17练习骨架、分层提示、完整代码、搜索规模分析和过关问题。先独立尝试,再展开参考代码;看过动画不等于已经独立掌握。

算法学习中心 · 回文专题