Learning
토픽 15 / 66·트리 자료구조

이진 트리 순회 (Binary Tree Traversal)

이진 트리 순회 (Binary Tree Traversal)

이진 트리의 모든 노드를 체계적으로 방문하는 방법으로, 노드·왼쪽·오른쪽 방문 순서에 따라 전위·중위·후위·레벨 순회로 구분

목적: 트리 노드 방문, 데이터 처리, 트리 복사/비교, 수식 변환

특징: 재귀적/반복적 구현, DFS(전위/중위/후위), BFS(레벨)

순회 방식

  • 전위 순회(Preorder): 노드 → 왼쪽 → 오른쪽 (NLR), 복사/직렬화에 활용
  • 중위 순회(Inorder): 왼쪽 → 노드 → 오른쪽 (LNR), BST에서 정렬된 순서 출력
  • 후위 순회(Postorder): 왼쪽 → 오른쪽 → 노드 (LRN), 삭제/메모리 해제에 활용
  • 레벨 순회(Level-order): 레벨별 좌→우, BFS 사용, 큐 활용

구현 방법

  • 재귀: 간결하고 직관적, 스택 오버플로우 위험
  • 반복(스택): 전위/중위/후위 구현, 명시적 스택 사용
  • 반복(큐): 레벨 순회, FIFO 사용

Morris Traversal: O(1) 공간 중위 순회, 스레드 이진 트리 개념 활용

시간 복잡도: 모든 순회 O(n)

공간 복잡도: 재귀 O(h), 반복 O(h), Morris O(1) [h=높이]

수식 트리 활용

  • 전위 순회 → 전위 표기법 (+ A B)
  • 중위 순회 → 중위 표기법 (A + B)
  • 후위 순회 → 후위 표기법 (A B +)

장점: 트리 데이터 체계적 처리, 다양한 응용

단점: 재귀 시 스택 오버플로우, 깊은 트리에서 메모리

적용사례: 컴파일러(수식 트리), 파일 시스템, XML/JSON 파싱, 트리 직렬화

비교: 전위(복사) vs 중위(정렬) vs 후위(삭제) vs 레벨(BFS)

연관: 이진 트리, DFS, BFS, 스택, 큐, 수식 트리