mirror of
https://github.com/krahets/hello-algo.git
synced 2024-12-27 02:46:28 +08:00
build
This commit is contained in:
parent
f421bbec33
commit
dc1f3da606
1 changed files with 15 additions and 4 deletions
|
@ -12,7 +12,7 @@ comments: true
|
||||||
|
|
||||||
给定一个二叉树,搜索并记录所有值为 $7$ 的节点,返回节点列表。
|
给定一个二叉树,搜索并记录所有值为 $7$ 的节点,返回节点列表。
|
||||||
|
|
||||||
**解题思路**:前序遍历这颗树,并判断当前节点的值是否为 $7$ ,若是则将该节点的值加入到结果列表 `res` 之中。
|
对于此题,我们前序遍历这颗树,并判断当前节点的值是否为 $7$ ,若是则将该节点的值加入到结果列表 `res` 之中。
|
||||||
|
|
||||||
=== "Java"
|
=== "Java"
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ comments: true
|
||||||
|
|
||||||
在二叉树中搜索所有值为 $7$ 的节点,**返回根节点到这些节点的路径**。
|
在二叉树中搜索所有值为 $7$ 的节点,**返回根节点到这些节点的路径**。
|
||||||
|
|
||||||
**解题思路**:在例题一代码的基础上,我们需要借助一个列表 `path` 记录访问过的节点路径。当访问到值为 $7$ 的节点时,则复制 `path` 并添加进结果列表 `res` 。遍历完成后,`res` 中保存的就是所有的解。
|
在例题一代码的基础上,我们需要借助一个列表 `path` 记录访问过的节点路径。当访问到值为 $7$ 的节点时,则复制 `path` 并添加进结果列表 `res` 。遍历完成后,`res` 中保存的就是所有的解。
|
||||||
|
|
||||||
=== "Java"
|
=== "Java"
|
||||||
|
|
||||||
|
@ -411,9 +411,12 @@ comments: true
|
||||||
|
|
||||||
!!! question "例题三"
|
!!! question "例题三"
|
||||||
|
|
||||||
在二叉树中搜索所有值为 $7$ 的节点,返回根节点到这些节点的路径,**路径中不能包含值为 $3$ 的节点**。
|
在二叉树中搜索所有值为 $7$ 的节点,返回根节点到这些节点的路径,**路径中有且只有一个值为 $7$ 的节点,并且不能包含值为 $3$ 的节点**。
|
||||||
|
|
||||||
**解题思路**:在例题二的基础上添加剪枝操作,当遇到值为 $3$ 的节点时,则终止继续搜索。
|
在例题二的基础上添加剪枝操作,包括:
|
||||||
|
|
||||||
|
- 当遇到值为 $7$ 的节点时,记录解并返回,终止搜索。
|
||||||
|
- 当遇到值为 $3$ 的节点时,则直接返回,停止继续搜索。
|
||||||
|
|
||||||
=== "Java"
|
=== "Java"
|
||||||
|
|
||||||
|
@ -429,6 +432,7 @@ comments: true
|
||||||
if (root.val == 7) {
|
if (root.val == 7) {
|
||||||
// 记录解
|
// 记录解
|
||||||
res.add(new ArrayList<>(path));
|
res.add(new ArrayList<>(path));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
preOrder(root.left);
|
preOrder(root.left);
|
||||||
preOrder(root.right);
|
preOrder(root.right);
|
||||||
|
@ -451,6 +455,7 @@ comments: true
|
||||||
if (root->val == 7) {
|
if (root->val == 7) {
|
||||||
// 记录解
|
// 记录解
|
||||||
res.push_back(path);
|
res.push_back(path);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
preOrder(root->left);
|
preOrder(root->left);
|
||||||
preOrder(root->right);
|
preOrder(root->right);
|
||||||
|
@ -472,6 +477,7 @@ comments: true
|
||||||
if root.val == 7:
|
if root.val == 7:
|
||||||
# 记录解
|
# 记录解
|
||||||
res.append(list(path))
|
res.append(list(path))
|
||||||
|
return
|
||||||
pre_order(root.left)
|
pre_order(root.left)
|
||||||
pre_order(root.right)
|
pre_order(root.right)
|
||||||
# 回退
|
# 回退
|
||||||
|
@ -492,6 +498,7 @@ comments: true
|
||||||
if int(root.Val) == 7 {
|
if int(root.Val) == 7 {
|
||||||
// 记录解
|
// 记录解
|
||||||
*res = append(*res, *path)
|
*res = append(*res, *path)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
preOrderIII(root.Left, res, path)
|
preOrderIII(root.Left, res, path)
|
||||||
preOrderIII(root.Right, res, path)
|
preOrderIII(root.Right, res, path)
|
||||||
|
@ -514,6 +521,7 @@ comments: true
|
||||||
if (root.val === 7) {
|
if (root.val === 7) {
|
||||||
// 记录解
|
// 记录解
|
||||||
res.push([...path]);
|
res.push([...path]);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
preOrder(root.left, path, res);
|
preOrder(root.left, path, res);
|
||||||
preOrder(root.right, path, res);
|
preOrder(root.right, path, res);
|
||||||
|
@ -540,6 +548,7 @@ comments: true
|
||||||
if (root.val === 7) {
|
if (root.val === 7) {
|
||||||
// 记录解
|
// 记录解
|
||||||
res.push([...path]);
|
res.push([...path]);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
preOrder(root.left, path, res);
|
preOrder(root.left, path, res);
|
||||||
preOrder(root.right, path, res);
|
preOrder(root.right, path, res);
|
||||||
|
@ -568,6 +577,7 @@ comments: true
|
||||||
if (root.val == 7) {
|
if (root.val == 7) {
|
||||||
// 记录解
|
// 记录解
|
||||||
res.Add(new List<TreeNode>(path));
|
res.Add(new List<TreeNode>(path));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
preOrder(root.left);
|
preOrder(root.left);
|
||||||
preOrder(root.right);
|
preOrder(root.right);
|
||||||
|
@ -590,6 +600,7 @@ comments: true
|
||||||
if root.val == 7 {
|
if root.val == 7 {
|
||||||
// 记录解
|
// 记录解
|
||||||
res.append(path)
|
res.append(path)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
preOrder(root: root.left)
|
preOrder(root: root.left)
|
||||||
preOrder(root: root.right)
|
preOrder(root: root.right)
|
||||||
|
|
Loading…
Reference in a new issue