Ram*_*hum 5 python algorithm design-patterns
我偶尔会使用一种设计模式,我不知道它叫什么.也许它有一个名字,有人知道吗?
当我想遍历树状结构并在其所有节点上执行某些操作时,我会使用它.它是这样的:
nodes_to_handle = [root_node]
while nodes_to_handle:
node = nodes_to_handle.pop()
# handle node
nodes_to_handle += node.get_neighbors()
Run Code Online (Sandbox Code Playgroud)
注意,结构不必是树; 例如,此模式可用于在数组中执行泛洪填充.
那么,这种设计模式是否有可接受的名称?
我认为您所得到的是比深度优先遍历更通用的模式:前沿列表。前沿列表是仍需要处理的元素的(排序或未排序)列表;该算法继续删除元素并处理它们,直到列表为空或满足某些其他终止条件。
我最喜欢的这种模式的例子是迪杰斯特拉算法。在 Dijkstra 中,前沿列表是一个优先级队列或堆,每次迭代时,最小值的元素都会从堆中弹出。