이진 트리의 넓이 우선 순회 (BFS; Breadth First Traversal)

이진 트리의 넓이 우선 순회 (BFS: Breadth First Traversal)

원칙

  • 수준(Level)이 낮은 노드를 우선으로 방문
  • 같은 수준의 노드를 사이에는 부모 노드의 방순 순서에 따라 방문(왼 > 오)

image-20210422203246621

순회의 결과: A -> B -> C -> D -> E … J

넓이 우선 순회 흐름 설계

img

img

img

img

img

img

img

img

img

img

img

img

img

img

img

넓이 우선 순회 알고리즘 구현

  1. traversal에는 빈 리스트를 초기화, q에는 빈 큐를 초기화한다.
  2. 빈 트리가 아니면, root node를 큐에 추가(enqueue)한다
  3. q가 비어있지 않는 동안
    1. q의 원소를 추출하여(dequeue) node에 저장한다
    2. node를 방문 처리(traversal에 append)한다
    3. node의 왼쪽, 오른쪽 자식 노드가 있으면 q에 추가한다
  4. q가 비어있는 큐가 되면 모든 노드 방문 완료하였음으로 traversal를 리턴한다