트리, 힙, 이진탐색트리

지니씨·2021년 10월 8일
0

자료구조&알고리즘

목록 보기
5/10

정의

  • 사이클이 없는 연결 그래프
  • 루트
  • 리프노드
  • 지름(높이): 트리의 경로 중 가장 긴 경로
  • 조상: 자기 자신을 포함하여 상위에 있는 노드들
  • 자손: 자기 자신을 포함하여 하위에 있는 노드들

저장

그래프 저장 방법과 동일
또는 부모만 저장하는 방법 사용


탐색

그래프 탐색 방법과 동일

DFS는 루트를 언제 방문하는지에 따라 3가지로 나뉨(재귀 호출 시점 차이)

  • 프리오더 (노드->왼쪽자식->오른쪽자식) : 그래프 풀 때 주로 사용
  • 인오더 (왼쪽자식->노드->오른쪽자식) : 거의 사용 X (BST에서 사용)
  • 포스트오더 (왼쪽자식->오른쪽자식->노드) : 자식 처리 한 뒤 그 값을 이용해 부모 값 처리하는 경우가 많음

이진 트리

  • 자식을 최대 2개만 가지고 있는 트리
  • 부모 노드가 n인 경우 자식노드는 2n, 2n+1
  • 힙, 세그먼트 트리 등에 사용
  • 완전 이진 트리
    • 리프노드를 제외한 노드의 자식의 수는 모두 2인 트리
    • 리프노드의 자식 수는 0
    • 모든 리프노드의 depth(h)가 동일
    • 노드수 = 2^h-1개
  • 이진탐색트리(이진검색트리, Binary Search Tree, BST)
    • BST를 인오더순회하면 항상 정렬된 상태 리턴
    • 이진 트리이면서, 다음과 같은 성질을 가지고 있음
      • 루트 노드의 왼쪽 서브트리의 모든 key는 루트 노드의 key보다 작음
      • 루트 노드의 오른쪽 서브트리의 모든 key는 루트 노드의 key보다 크거나 같음
      • 각 서브트리 또한 이진 탐색 트리임
    • 삽입, 삭제, 검색 모두 O(h)
    • 아무 항목이나 삭제 가능

  • 완전 이진 트리의 일종으로 최댓값이나 최솟값을 빠르게 찾기 위한 자료구조
  • 삽입, 삭제 시 O(logN)의 시간이 걸림
  • 최대 또는 최소만 삭제 가능
  • 검색 X
  • 최대 힙(max heap)
    • 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리
    • 부모 노드 값 >= 자식 노드 값
  • 최소 힙(min heap)
    • 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리
    • 부모 노드 값 <= 자식 노드 값

우선순위 큐

  • 현재 우선순위 큐 안에서 우선순위가 가장 높은 데이터가 먼저 삭제 됨
profile
하루 모아 평생 🧚🏻

0개의 댓글