-> 블로그 이전

[Data Structure] 트리 개념

2021. 12. 12. 14:30Major`/자료구조

트리

- 계층적 구조(hierarchical structure)을 가진 자료구조

- 부모-자식 관계의 노드들로 구성

 

 

트리의 용어

- 노드(node) : 트리의 구성요소 → A, B, C, D, E, F, G, H, I, J

- 루트(root) : 각 Tree의 최상위 노드 → A

- 서브 트리(subtree) : 최상위 노드를 제외한 나머지 노드 / 하나의 노드 + 그 노드들의 자식 → {B, E, F, G}, {C, H}, {D, I, J}

- 간선(edge) : 노드들 사이의 선

- 단말 노드(terminal node) : 자식이 없는 노드 → E, F, G, H, I, J

- 비단말 노드(nonterminal node) : 자식이 있는 노드 → A, B, C, D

- 높이(height) : Tree의 최대 레벨 → 3

- 레벨(level) : Tree의 각층의 번호

- 차수(degree) : 노드가 가지고 있는 자식 노드의 개수 → A = 3, B = 3, C = 1, D = 2

- 형제 노드 : 같은 레벨에 있는 노드들의 관계

 

이진 트리 (Binary Tree)

- 모든 노드가 2개의 서브 트리를 보유

- 서브 트리는 공집합도 가능 → 노드를 하나도 갖지 않을 수도 있다

- 모든 노드는 차수가 2 이하이다

 

 

※ Example) 노드의 개수가 k개, 높이가 n

 

- 최소 노드 개수 = n개

- 최대 노드 개수 = 2ⁿ-1개

- 최소 높이 = k

- 최대 높이 = log₂(k+1)개

- 간선의 개수 = k-1개

 

 

이진트리 분류

● 포화 이진 트리 (full binary tree)

  • 트리의 각 레벨에 노드가 꽉 차있는 이진트리
  • 높이가 n인 포화 이진트리 : 2ⁿ-1개의 노드 보유
  • 노드의 각 번호는 레벨 단위로 왼쪽 → 오른쪽으로 번호 부여

 

● 완전 이진 트리 (complete binary tree)

- 높이가 n일때 

  • 레벨 1~n-1까지의 노드는 모두 채워져있다
  • 마지막 레벨 n에서는 왼쪽 → 오른쪽으로 노드가 순서대로 채워져있다
  • 마지막 레벨 n에는 노드가 모두 채워져 있지 않아도 된다, 하지만 중간에 빈곳이 있으면 안된다

 

● 기타 이진 트리

  • 포화/완전 이진 트리가 아닌 이진 트리