📅  最后修改于: 2023-12-03 15:14:39.752000             🧑  作者: Mango
深度优先搜索算法(Depth-first Search)是一种用于遍历或搜索树或图数据结构的算法。该算法会尽可能深地搜索树的分支,并在必要时回溯到前一个节点。
下面是使用 Python 实现深度优先搜索算法的代码:
class Node:
def __init__(self, value):
self.value = value
self.children = []
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
class Search:
def dft(self, node):
stack = Stack()
visited = set()
stack.push(node)
while len(stack) > 0:
current = stack.pop()
print(current.value)
for child in current.children:
if child not in visited:
stack.push(child)
visited.add(child)
上面的代码中,使用了以下数据结构:
Node
: 表示节点的类。Stack
: 表示栈的类,用于存储待处理的节点。Search
: 执行搜索操作的类,包含一个深度优先搜索算法 dft
。使用示例:
node1 = Node(1)
node2 = Node(2)
node3 = Node(3)
node4 = Node(4)
node5 = Node(5)
node6 = Node(6)
node1.children = [node2, node3]
node2.children = [node4, node5]
node3.children = [node6]
search = Search()
search.dft(node1)
# 输出:1 3 6 2 5 4
上面实现的深度优先搜索算法可以用于遍历树或图,并且可以通过修改 Node
类中的 children
属性来表示不同的数据结构。