본문으로 건너뛰기

트리 순회

모든 노드를 한번씩 방문하는 것을 의미한다. 크게 두가지 방법으로 순회할 수 있다.

  • Breadth-first Search(BFS) 넓이우선
  • Depth-first Search(DFS) 깊이우선

BFS

  1. 큐와 방문한 노드의 값을 저장할 변수를 생성합니다.
  2. Root 노드를 큐에 위치합니다.
  3. 큐에 노드가 있다면 아래를 반복합니다.
    1. 큐에서 노드를 하나 꺼내서 방문한 노드 변수에 넣습니다.
    2. 꺼낸 노드가 왼쪽 자식이 있다면 큐에 넣습니다.
    3. 꺼낸 노드가 오른쪽 자식이 있다면 큐에 넣습니다.
  4. 방문한 노드 변수를 반환합니다.

DFS - InOrder

  1. 방문한 노드의 값을 저장할 변수를 생성합니다.
  2. current 변수에 BST의 Root 노드를 저장합니다.
  3. 노드를 인자로 받는 helper 함수를 작성합니다.
    1. 노드가 왼쪽 자식이 있다면, helper 함수를 왼쪽 자식 노드로 호출합니다.
    2. 방문한 노드 변수에 노드의 값을 저장합니다.
    3. 노드가 오른쪽 자식이 있다면, helper 함수를 오른쪽 자식노드로 호출합니다.
  4. current 변수로 helper 함수를 호출합니다.
  5. 방문한 노드 변수를 반환합니다.

DFS - PreOrder

  1. 방문한 노드의 값을 저장할 변수를 생성합니다.
  2. current 변수에 BST의 Root 노드를 저장합니다.
  3. 노드를 인자로 받는 helper 함수를 작성합니다.
    1. 방문한 노드 변수에 노드의 값을 저장합니다.
    2. 노드가 왼쪽 자식이 있다면, helper 함수를 왼쪽 자식 노드로 호출합니다.
    3. 노드가 오른쪽 자식이 있다면, helper 함수를 오른쪽 자식노드로 호출합니다.
  4. current 변수로 helper 함수를 호출합니다.
  5. 방문한 노드 변수를 반환합니다.

DFS - PostOrder

  1. 방문한 노드의 값을 저장할 변수를 생성합니다.
  2. current 변수에 BST의 Root 노드를 저장합니다.
  3. 노드를 인자로 받는 helper 함수를 작성합니다.
    1. 노드가 왼쪽 자식이 있다면, helper 함수를 왼쪽 자식 노드로 호출합니다.
    2. 노드가 오른쪽 자식이 있다면, helper 함수를 오른쪽 자식노드로 호출합니다.
    3. 방문한 노드 변수에 노드의 값을 저장합니다.
  4. current 변수로 helper 함수를 호출합니다.
  5. 방문한 노드 변수를 반환합니다.