广度优先搜索与队列

2020-03-10  本文已影响0人  yousa_

在算法中,广度优先搜索算法(BFS)和队列(Queue)是一对好朋友,基本上用到BFS思路的地方都可以用队列来解决

在 Python 中,可以使用以下几种方法实现队列

①collections包里的deque,对应操作

②queue包中的Queue,对应操作

③直接使用list,只要保证只使用

第一种是正统的Python的双端队列,缺点是调用的函数有点复杂,可能一不小心写了append,就不对了。
第二种使用封装的函数很直接,put()和get()不容易搞混淆。但是Queue类型其实里面本身就装了一个deque。
第三种优势在于不用调包,但是函数使用逻辑可能造成混淆。在这里,完整版代码采用第二种,好理解,精简版代码采用第三种,省行数。三种方式可以按照你的喜好互相替换,完全不影响结果。
补充一下,使用列表时,list.insert(0, )的时间复杂度是O(n),跟deque是有区别的。deque的appendleft(val)的时间复杂度是O(1)。所以用deque更好。

上一篇 下一篇

猜你喜欢

热点阅读