Data Structure & Algorithm

[자료구조] 이진트리 정의 (in python)

여뉴누 2023. 6. 18. 21:47
728x90
강의 출처) 숙명여자대학교 소프트웨어융합전공 강의 "자료구조", 이현자 교수님

1. 트리

: 계층적 자료의 표현에 적합한 자료 구조
= 루트 노드 + 서브 트리

 


2. 이진트리

1) 이진트리란 ?

: 모든 노드가 2개의 서브 트리(노드)를 갖는 트리

  • 서브 트리는 공집합일 수도 있음
  • 루트와 왼쪽 서브트리 & 오른쪽 서브트리로 구성된 노드들의 집합
  • 이진트리의 서브트리는 모두 이진트리

 

2) 허프만 코드 트리

: 문자에 대한 컴퓨터 내부 표현 중 하나 -> 텍스트 문서 압축

  • 빈도수가 높은 문자에 대해서는 짧은 코드를 부여
  • 빈도수가 적은 문자에 대해서는 긴 코드를 부여
  • 결론적으로 최대한 적은 비트만 차지하도록 하는 것

 

3) 트리 관련 용어

  • 노드 : 데이터와 연결선으로 구성된 트리의 한 유닛
  • 노드의 차수 : 해당 노드의 자식 노드 개수
  • 트리의 차수 : 모든 노드의 차수 중 최대값
  • 단말 노드 (leaf [terminal] node) : 자식 노드가 없는 트리의 가장 끝에 위치한 노드
  • 비단말 노드 : 단말 노드를 제외한 모든 노드
  • 깊이 (level) : 루트 노드(0) ~> 단말 노드 방향으로 1씩 증가
  • 부모 노드 : 노드의 부모노드라면 노드보다 level이 1만큼 작은 노드를 의미
  • 자식 노드 : 노드의 자식노드라면 노드보다 level이 1만큼 큰 노드를 의미
  • 형제 노드 : 같은 부모 노드를 가지는 노드들
  • 조상 노드 : 노드 ~ 루트 노드 사이의 노드들
  • 후손 노드 : 노드의 자식노드 이후의 모든 노드들
  • 노드의 깊이 : 루트노드 ~ 노드 연결선의 수
  • 노드의 높이 : 노드 ~ 단말노드 연결선의 수
  • 트리의 높이 = 트리의 깊이 (루트노드 ~ 단말노드)

 

4) 최대 노드의 수

(1) 각 레벨에서의 최대 노드 수


 

  •  트리의 레벨
    ex) 루트 노드의 level = 0 -> 1

(2) 트리 높이에 따른 최대 노드 수

  • 포화 이진트리
    -> -1의 의미 : 루트노드는 한 개니까 !
     

 

5) 트리 종류

(1) 포화 이진 트리

  • 모든 노드가 2개의 자식 노드를 가지는 트리
  • 모든 리프 노드의 레벨이 동일함

 

(2) 완전 이진 트리

  • 포화 이진 트리의 leaf들이 오른쪽부터 제거되면서 얻어진 트리
  • 높이가 h일 때, 레벨 1부터 h-1까지는 노드가 모두 채워져 있고
  • 마지막 레벨 h에서는 왼쪽 -> 오른쪽 방향으로 노드가 채워져 있음
728x90