woowacourse-study / talteco

"조조그린"의 면접 스터디
3 stars 0 forks source link

트리와 이진트리란? #96

Open bugoverdose opened 2 years ago

bugoverdose commented 2 years ago

트리

트리의 성질

  1. 루트 노드는 하나만 존재
  2. 사이클이 존재하지 않음.
  3. 자녀 노드에 하나의 부모 노드만 존재
  4. 데이터를 순차적으로 저장하지 않는 비선형 구조(nonlinear). (not 리스트)
  5. 트리에 서브트리가 존재하는 재귀적 구조
  6. 계층적 구조 : 부모-자식의 계층 구조를 지님. 특정 노드는 인접한 다른 노드의 부모 혹은 자식

결과적으로 V - 1 = E라는 공식이 성립함.

트리의 구성

루트 노드 - 브랜치 노드(내부 노드) - 리프 노드(외부 노드/단말 노드)

노드의 세부 종류

주요 용어


이진트리(binary tree)

자녀 노드 개수가 최대 2개인 트리. 차수가 2 이하.

형태에 따른 이진트리의 종류

image
  1. full + complete = perfect

    • 정이진 트리(full): 모든 자식 노드가 없거나, 2개인 이진트리. 모든 노드의 차수가 0 혹은 2.

    • 완전 이진 트리(complete): 왼쪽에서부터 차곡차곡 채워져 있는 이진트리.

    • 마지막 레벨을 제외하고 모든 레벨에서 노드가 완전히 채워짐.

    • 마지막 레벨도 왼쪽부터 빠짐없이 채워짐. (complete해가는 과정)

    • heap 자료구조가 내부적으로 완전 이진 트리로 구현됨.

    • 포화 이진 트리(perfect): 모든 레벨에서 노드가 빠짐없이 채워져 있는 이진 트리

    • 정이진 트리 + 완전 이진 트리.

  2. 변질 이진 트리(degenerate 혹은 pathological)

    • 모든 부모 노드에서 자식 노드가 1개만 존재하는 이진 트리. 차수가 1.
    • left skewed binary tree: 모든 부모 노드에서 left child 노드만 지니는 경우
    • right skewed binary tree: 모든 부모 노드에서 right child 노드만 지니는 경우
  3. 균형 이진 트리(balanced)

    • 모든 노드에서 왼쪽과 오른쪽 서브트리의 높이 차이가 최대 1인 이진 트리.
    • map, set 내부의 레드 블랙 트리는 균형 이진 트리의 일종
tonic523 commented 2 years ago