AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

데이터 구조 - 트리

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

데이터 분석

대상자

  • 프로그래밍 초보자 및 중급 개발자
  • 데이터 구조와 알고리즘을 학습하는 학생 및 연구자
  • 효율적인 데이터 관리와 검색 알고리즘 설계를 필요로 하는 개발자

핵심 요약

  • 트리는 노드로 구성된 비선형 데이터 구조로, 루트 노드자식 노드 간의 계층적 관계를 통해 데이터를 저장
  • 이진 탐색 트리(BST)는 모든 노드가 "왼쪽 자식 ≤ 현재 노드 < 오른쪽 자식"의 조건을 만족하며, 완전 이진 트리는 모든 레벨이 채워져야 하며, 완전 이진 트리2ᵏ-1 노드를 가짐
  • 최소 힙최대 힙으로 구분되며, extract_mininsert 연산은 O(log n) 시간 복잡도를 가지며, 트리의 균형은 검색 효율에 직접적인 영향

섹션별 세부 요약

1. 트리의 기본 정의

  • 트리는 루트 노드가 있고, 각 노드는 0개 이상의 자식 노드를 가짐
  • 사이클이 없으며, 노드의 데이터 타입과 순서는 유연
  • 그래프 이론에서 루트 노드는 필수적이지 않지만, 프로그래밍에서는 일반적으로 사용

2. 이진 트리 vs 이진 탐색 트리(BST)

  • 이진 트리는 각 노드가 최대 2개의 자식 노드를 가짐
  • BST는 모든 노드가 "왼쪽 자식 ≤ 현재 노드 < 오른쪽 자식" 조건을 만족하며, 중복 값 처리 방식은 정의에 따라 달라짐

3. 이진 트리의 종류

  • 완전 이진 트리: 모든 레벨이 채워져야 하며, 마지막 레벨은 왼쪽부터 채움
  • 완전 이진 트리완전 이진 트리2ᵏ-1 노드를 가지며, 실제 구현에서는 드물게 사용됨
  • 완전 이진 트리는 모든 노드가 0개 또는 2개의 자식을 가짐

4. 트리 순회 방법

  • In-Order Traversal: 왼쪽 → 현재 노드 → 오른쪽 순서로 탐색 (BST에서 오름차순 순회)
  • Pre-Order Traversal: 현재 노드 → 왼쪽 → 오른쪽 순서로 탐색 (루트가 항상 첫 노드)
  • Post-Order Traversal: 왼쪽 → 오른쪽 → 현재 노드 순서로 탐색 (루트가 항상 마지막 노드)

5. 힙(Heap)과 연산

  • 최소 힙: 각 노드가 자식 노드보다 작으며, extract_min 연산은 O(log n) 시간복잡도
  • insert 연산은 요소를 끝에 삽입 후 부모와 교환하며 O(log n) 시간복잡도
  • extract_min은 루트 노드를 제거한 후 마지막 요소를 루트로 이동 후 bubble down 수행

결론

  • 트리 구조는 데이터의 계층적 관계를 효율적으로 표현하며, BST은 검색 및 우선순위 큐 구현에 꼭 필요한 데이터 구조임
  • 트리의 균형 유지와 트리 순회 방식 선택은 알고리즘 성능에 직접적인 영향을 미치므로, 실제 구현 시 반드시 고려해야 함