DFS와 BFS를 제대로 이해하려면 기본 자료구조인 스택과 큐에 대한 이해가 전제되어야하며 스택과 큐, 재귀 함수에 대해 알아야한다.
박스 쌓기에 비유할 수 있다. 선입후출(FILO) 혹은 후입선출(LIFO) 구조.
Python에서는 별도의 라이브러리를 사용할 필요가 없고 append(), pop()을 사용하면 된다.
stack = []
stack.append(5)
stack.append(3)
stack.pop()
print(stack) #[5]
대기줄에 비유할 수 있다. 선입선출(FIFO) 구조.
Python에서 큐를 구현할 때는 collections 모듈에서 제공하는 deque 자료구조를 활용해야 한다.
deque는 스택과 큐의 장점을 모두 채택한 것인데 데이터를 넣고 빼는 속도가 리스트 자료형에 비해 효율적이며 queue 라이브러리를 이용하는 것보다 더 간단하다.
from collections import deque
queue = deque()
queue.append(5)
queue.append(2)
queue.append(3)
queue.popleft()
print(queue) #deque([2, 3])
queue.reverse()
print(queue) #deque([3, 2])
def recursive_function():
print("재귀함수 호출")
recursive_function()
recursive_function()
#무한히 출력되다가 RecursiveError: maximum recursion depth
#exceed while pickling an object 오류가 발생한다.
재귀 함수를 사용할 때에는 반드시 종료 조건을 명시해야 한다.