(1) 원칙
(2) 넓이 우선 순회 알고리즘 설계
(3) 넓이 우선 순회 알고리즘 구현
① (초기화) traversal <- 빈 리스트, q <- 빈큐
② 빈 리스트가 아니면, root node를 큐에 추가 (enqueue)
③ q가 비어 있지 않은 동안
node <- q에서 원소를 추출(dequeue)
node를 방문
node의 왼쪽, 오른쪽 자식(있으면) 들을 q에 추가
④ q가 빈 큐가 되면 모든 노드 방문 완료
===> while문 활용이 핵심!!
class Binary Tree:
def bft(self):
traversal = []
q = ArrayQueue()
if self.root == None:
return traversal
else :
q.enqueue(self.root)
while not q.isEmpty() :
x = q.dequeue()
traversal.append(x.data)
if x.left :
q.enqueue(x.left)
if x.right:
q.enqueue(x.right)
return traversal