학부 수업 내용 정리/자료구조

Binary Tree

supersumin 2025. 4. 8. 13:55

Non-linear data structure

Data structure의 유형은 linear 구조와 non-linear 구조로 나뉜다. 두 구조의 차이는 데이터 간의 연결 방식과 접근 방식에 있다.

  • linear 구조: 데이터가 일렬로 나열되어 있으며, 앞에서부터 차례대로 inedx를 통해 순서대로 접근한다. (배열, 스택, 큐)
  • non-linear 구조: 구조가 나무처럼 가지가 뻗어나가거나, 도로처럼 서로 연결된 구조이다. 순차적인 접근이 아닌 연결 관계를 따라 탐색한다. (트리, 그래프)

접근 방식이 복잡하더라도 non-linear 구조를 사용하는 이유는 현실 세계의 데이터와 관계가 비선형적이기 때문이다. 예를 들어, 도시와 도시 간의 도로망, 사람들 간의 친구 관계처럼 계층적인 관계를 표현할 때 non-linear 구조가 필요하다.

 

Basic concept of tree

Definition

Tree는 non-linear 자료구조로 각 node 하나의 parent를 가지고, 0개 이상의 자식을 가질 수 있다.

components

  • Node: 데이터를 담고 있는 동그라미 형태의 기본 단위
  • Edge: Node와 node를 연결하는 선
  • Root: tree의 가장 위에 있는 node
  • Terminal (leaf) node: tree의 가장 하단의 node
  • non-Terminal node: root도 아니고 leaf도 아닌 node

Parent, child & sibling nodes

  • Parent (부모 노드): Node를 상위에서 연결한 node
    - E: B
    - H: D
    - M: H
  • Child (자식 노드): Node 하위에 연결된 node
    - B: E, F
    - E: J, K, L
    - C
  • Sibling (형제 노드): 한 부모에서 나온 옆에 있는 node
    - J: K, L
    - I: G, H

Ancestor & descendant nodes

  • Ancestor (조상 노드, 엔쎄스털): N의 Ancestor는 N에서 root에 이르는 경로에 있는 모든 상위 Node들
    - J: E, B, A
    - C: A
    - G: D, A
  • Descendant (후손 노드, 디쎈던트): 어떤 node N에서 leaf에 이르는 경로에 있는 모든 하위 Node들
    - E: J, K, L
    - D: G, H, I, M

Degree & level

  • Degree (차수): 정점에 연결된 간선의 개수, 자식의 수
    - A: 3
    - B: 2
    - H: 1
  • Level (레벨): 현재 node가 root로부터 얼마나 떨어져 있는지를 나타내는 수치
    - A: 1
    - K: 4
    - G: 3

Height

Height는 어떤 노드에서 leaf까지의 거리이다.

- A: 3
- J: 0
- G: 0

- H: 1

Subtree

Tree는 항상 복수 개의 sybtree로 나뉠 수 있다.

 

Binary Tree(이진 트리)

Binary Tree?

각 node의 최대 차수가(degree) 2이거나 자식을 가지지 않는 tree 구조이다.

Height 범위

Node의 개수가 N일 때 tree의 구조에 따라 height이 달라질 수 있다.

 

Minimum height

Node가 좌우게 고르게 분포된 tree일 경우 height는 log₂(N) 꼴이 되며 height는 정수이므로 소수는 내림하여 정수로 표현한다.

height = ⌊log₂N⌋

Maximum heigth

모든 node가 한 쪽으로만 이어진 편향된 구조일 경우 tree는 linear 구조이며 height는 N-1이다.

 

Subtype of Binary trees

  • Full Binary Tree (포화 이진 트리): 모든 node가 0개 또는 2개의 children node를 가지는 tree, 모든 node의 children의 개수가 0 혹은 2인지를 통해 판단한다.
  • Perfect Binary Tree (완전 포화 이진 트리): Full binary tree의 일종으로 모든 leaf node가 동일한 level에 있는 tree, 모든 level이 가득 차있는지로 판단한다.
  • Complete Binary Tree (완전 이진 트리): leaf level을 제외한 모든 level은 꽉 차 있고, 마지막 level은 왼쪽부터 순서대로 채워진 tree, 약간 덜 채워졌지만 왼쪽 정렬된 느낌이다.
  • Balanced Binary Tree (균형 이진 트리): 모든 노드의 왼쪽, 오른쪽 subtree의 height 차이가 1 이하인 tree, 물론 한 쪽만 무거워 보여도 왼쪽과 오른 쪽 subtree의 height 차이가 1 이하면 된다.
  • Skewed tree(편향 이진 트리, 스큐드):  모든 node가 한 쪽 자식만 가지는 tree

 

 

'학부 수업 내용 정리 > 자료구조' 카테고리의 다른 글

Queue  (0) 2025.04.04
Stack  (0) 2025.03.31
Variation of linked lists  (0) 2025.03.23
Complexity  (0) 2025.03.22
Linked lists  (0) 2025.03.18