본문 바로가기

개발에 도움이 되는/자료구조 & 알고리즘

이진 트리(Binary Tree)

- 이진 트리 (Binary Tree)

모든 노드들이 둘 이하(공집합 포함)의 자식을 가진 트리

- 이진 트리 유형

 1. 전 이진트리 (Full Binary Tree or Strict Binary Tree) : 모든 노드가 0개 또는 2개의 자식 노드를 갖는 트리

 

 

 2. 완전 이진 트리 (Complete Binary Tree) : 마지막 레벨을 제외하고 모든 레벨이 완전히 채워져 있는 트리, 마지막 레벨은 꽉 차 있지 않아도 되지만 노드가 왼쪽에서 오른쪽으로 채워져야 함

 

 3. 포화 이진 트리 (Perfect Binary Tree) : 모든 내부 노드가 두 개의 자식 노드를 가지며 모든 리프 노드가 동일한 깊이 또는 레벨을 갖음

 

 

 4. 균형 이진 트리 (Balanced Binary Tree) : 왼쪽과 오른쪽 트리의 높이 차이가 모드 1만큼 차이나는 트리 (ex. AVL, Red-Black Tree)

 

 

- 이진 트리 표현

 1. 배열(순차) 표현

  - 루트 노드의 인덱스(i)가 0인 경우

  노드 i에 왼쪽 자식은 2 * i + 1 번째 노드이다

  노드 i에 오른쪽 자식은 2 * i + 2 번째 노드이다

  노드 i에 부모는 (i - 1) / 2 번째 노드이다

 

  - 루트 노드의 인덱스(i)가 1인 경우

  노드 i에 왼쪽 자식은 2 * i 번째 노드이다

  노드 i에 오른쪽 자식은 2 * i + 1 번째 노드이다

  노드 i에 부모는 i / 2 번째 노드이다

 

 

 2. 연결 리스트 표현 : 포인터를 사용하여 이진트리를 표현, 포인터로 연결하기 때문에 배열보단 접근 속도가 느리지만 삽입, 삭제가 쉽고 노드 수에 제한이 없음

 

 

반응형

'개발에 도움이 되는 > 자료구조 & 알고리즘' 카테고리의 다른 글

힙(Heap)  (0) 2022.01.02
이진 탐색 트리(Binary Search Tree, BST)  (0) 2022.01.02
트리(Tree)  (0) 2022.01.01
그래프(Graph)  (0) 2022.01.01
해시 테이블(Hash Table)  (0) 2022.01.01