mirror of
https://github.com/krahets/hello-algo.git
synced 2025-07-06 14:27:26 +08:00
Update the callouts for the algorithm problems.
This commit is contained in:
@ -4,7 +4,9 @@
|
||||
|
||||
回溯算法通常采用「深度优先搜索」来遍历解空间。在二叉树章节中,我们提到前序、中序和后序遍历都属于深度优先搜索。下面,我们从二叉树的前序遍历入手,逐步了解回溯算法的工作原理。
|
||||
|
||||
!!! question "例题一:在二叉树中搜索并返回所有值为 $7$ 的节点"
|
||||
!!! question "例题一"
|
||||
|
||||
给定一个二叉树,搜索并记录所有值为 $7$ 的节点,返回节点列表。
|
||||
|
||||
**解题思路**:前序遍历这颗树,并判断当前节点的值是否为 $7$ ,若是则将该节点的值加入到结果列表 `res` 之中。
|
||||
|
||||
@ -78,7 +80,9 @@
|
||||
|
||||
值得说明的是,**回退并不等价于函数返回**。为解释这一点,我们对例题一稍作拓展。
|
||||
|
||||
!!! question "在二叉树中搜索所有值为 $7$ 的节点,**返回根节点到这些节点的路径**"
|
||||
!!! question "例题二"
|
||||
|
||||
在二叉树中搜索所有值为 $7$ 的节点,**返回根节点到这些节点的路径**。
|
||||
|
||||
**解题思路**:在例题一代码的基础上,我们需要借助一个列表 `path` 记录访问过的节点路径。当访问到值为 $7$ 的节点时,则复制 `path` 并添加进结果列表 `res` 。遍历完成后,`res` 中保存的就是所有的解。
|
||||
|
||||
@ -181,7 +185,9 @@
|
||||
|
||||
复杂的回溯问题通常包含一个或多个约束条件,**约束条件通常可用于“剪枝”**。
|
||||
|
||||
!!! question "例题三:在二叉树中搜索所有值为 $7$ 的节点,返回根节点到这些节点的路径,**路径中不能包含值为 $3$ 的节点**"
|
||||
!!! question "例题三"
|
||||
|
||||
在二叉树中搜索所有值为 $7$ 的节点,返回根节点到这些节点的路径,**路径中不能包含值为 $3$ 的节点**。
|
||||
|
||||
**解题思路**:在例题二的基础上添加剪枝操作,当遇到值为 $3$ 的节点时,则终止继续搜索。
|
||||
|
||||
|
Reference in New Issue
Block a user