📜  def dft(self, array): stack = Stack()visited = set() stack.append(self) while len(stack) > 0 and while len(visited) >= 0: current = stack.pop() 数组. append(current)visited.add(current) 返回数组 - Python (1)

📅  最后修改于: 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 属性来表示不同的数据结构。