【发布时间】:2011-02-05 16:46:59
【问题描述】:
有一种设计模式我偶尔会用到,但我不知道它叫什么。也许它有一个名字并且这里有人知道它?
当我想遍历树状结构并对其所有节点执行一些操作时,我会使用它。它是这样的:
nodes_to_handle = [root_node]
while nodes_to_handle:
node = nodes_to_handle.pop()
# handle node
nodes_to_handle += node.get_neighbors()
请注意,结构不必是树;例如,此模式可用于对数组进行泛洪填充。
那么,这个设计模式有一个公认的名称吗?
【问题讨论】:
-
广度优先搜索
-
“广度优先”如何?你看代码了吗?
-
对,它是
nodes_to_handle.pop()而不是nodes_to_handle.pop(0),这意味着nodes_to_handle是一个堆栈,而不是一个队列,因此它是深度优先的。 -
不管遍历是深度优先还是广度优先,这种独特之处在于我拥有
nodes_to_handle的列表,直到它为空为止。没有名字吗? -
@coll-RR:是的……这就是所谓的堆栈。很抱歉让你失望,但它并不是那么独特。不过相当优雅。
标签: python algorithm design-patterns