📅  最后修改于: 2023-12-03 15:26:40.139000             🧑  作者: Mango
在树结构中,查询某个节点的子树是一个常见的需求。DFS(深度优先搜索)是查询树中子树的一种有效的方法。它遍历整棵树,并从根节点开始查找,找到目标节点,然后继续遍历目标节点的所有子节点。
对于 DFS 搜索树中的子树,我们可以使用以下步骤实现:
下面是一个 Python 的实现示例:
# 定义一个图的节点类
class Node:
def __init__(self, value):
self.value = value
self.children = []
# 实现 DFS 函数,搜索树中的子树
def dfs(node, target, result):
if node is None:
return False
# 找到目标节点时记录节点编号
if node.value == target:
result.append(node.value)
# 遍历当前节点的所有子节点
for child in node.children:
dfs(child, target, result)
return True
# 测试代码
root = Node(1)
node2 = Node(2)
node3 = Node(3)
node4 = Node(4)
node5 = Node(5)
node2.children = [node4]
node3.children = [node5]
root.children = [node2, node3]
result = []
dfs(root, 4, result)
print(result) # 输出 [4]
在该示例中,我们定义了一个 Node
类来代表树的节点。然后,我们实现了 dfs
函数,该函数接受三个参数:当前节点、目标节点以及结果列表。dfs
函数使用了递归的方式遍历整棵树,遇到目标节点时记录节点编号,并遍历所有子节点。最终,当遍历完成后,结果列表中将包含所有符合条件的节点编号。
在测试代码中,我们创建了一棵树,并将目标节点设置为节点 4。运行 dfs
函数后,输出结果为 [4]
,这意味着节点 4 是节点 1 的子树中的一个节点。