能够用 BFS 解决的问题,一定不要用 DFS 去做

因为用 Recursion 实现的 DFS 可能造成 StackOverflow

(NonRecursion 的 DFS 一来你不会写,二来面试官也看不懂)

 


 

1. Queue

Java常用的队列包括如下几种:
    ArrayDeque:数组存储。实现Deque接口,而Deque是Queue接口的子接口,代表双端队列(double-ended queue)。
    LinkedList:链表存储。实现List接口和Duque接口,不仅可做队列,还可以作为双端队列,或栈(stack)来使用。

C++中,使用<queue>中的queue模板类,模板需两个参数,元素类型和容器类型,元素类型必要,而容器类型可选,默认deque,可改用list(链表)类型。

Python中,使用collections.deque,双端队列

 1 class MyQueue:
 2     # 队列初始化
 3     def __init__(self):
 4         self.elements = []  # 用list存储队列元素
 5         self.pointer = 0    # 队头位置
 6 
 7     # 获取队列中元素个数
 8     def size(self):
 9         return len(self.elements)-pointer
10     
11     # 判断队列是否为空
12     def empty(self):
13         return self.size() == 0
14 
15     # 在队尾添加一个元素
16     def add(self, e):
17         self.elements.append(e)
18 
19     # 弹出队首元素,如果为空则返回None
20     def poll(self):
21         if self.empty():
22             return None
23         pointer += 1
24         return self.elements[pointer-1]
View Code

相关文章:

  • 2022-01-04
  • 2021-06-27
  • 2021-12-04
  • 2022-12-23
  • 2021-09-13
  • 2022-01-23
  • 2022-12-23
  • 2022-02-03
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-16
  • 2021-10-06
  • 2021-10-24
相关资源
相似解决方案