[자료구조] 이진트리 (feat. python)

SUNG JE KIM·5일 전
0

Binary Tree

트리 구조의 형태를 띄고 있으며, 일반적으로 0~2의 자식 노드를 가지고 있는 것이 특징이다.

용어:

  • Root Node: 제일 상위에 있는 부모 노드
  • Leaf Node: 제일 하단에 있는 자식 노드
  • Node: Root 또는 Leaf가 아닌 내부 노드
  • Link or Edge: Node와 Node를 잇는 간선
  • Key: 노드가 가지고 있는 값
  • hh: 트리의 높이
  • path: x1x_1 ~ x2x_2 노드까지 최단 경로 Edge의 갯수

Binary Tree의 종류

일반 이진 트리(Binary Tree)

  • 가장 기본적인 이진 트리를 칭하고, 0~2개의 Children Node를 가지고 있다.
  • 구조에 대한 제약이 없다.


포화 이진 트리(Full Binart Tree)

  • 모든 노드가 0 or 2 개의 Children Node를 가진다.
  • 모든 내부에 있는 Node는 정확히 두 개의 Children Node를 가진다.
  • 서로 다른 Leaf Node는 동일한 Lv가 아니여도 된다.


완전 이진 트리(Complete Binary Tree)

  • 마지막 Lv을 제외한 모든 Lv이 완전히 채워져 있다.
  • 마지막 Lv은 왼쪽부터 채워져야 하되, 가득 차있을 필요는 없다.


완벽 이진 트리(Perfect Binary Tree)

  • Leaf Node를 제외한 모든 Node는 정확히 두 개의 Children Node를 가진다.
  • 서로 다른 Leaf Node는 모두 동일한 Lv에 해당해야 한다.
  • NN이 노드의 총 갯수라고 하면 총 갯수 수식은 아래와 같다.
    수식: N=2h+11N = 2^{h+1} - 1


균형 이진 트리(Balanced Binary Tree)

  • 모든 노드에서 Left-SubTree(LHLH)와 Right-SubTree(RHRH)의 높이 차이가 최대 1이다.
    수식: LHRH=0|LH - RH| = 0 or LHRH=1|LH - RH| = 1
  • 효율적인 탐색, 삽입, 삭제 연산을 보장한다.
  • ex) AVL Tree, Red-Black Tree 가 균형 이진 트리에 해당한다.
    \rightarrow 추후에 다룰 예정

0개의 댓글