본문 바로가기

알고리즘/트리

이진 트리

개념

 

이진 트리는 각 노드의 자식 노드의 개수가 2개 이하로 구성된 트리

트리 영역에서 가장 많이 사용되는 형태

 

종류

 

종류 편향 이진 트리 포화 이진 트리 완전 이진 트리
설명 한쪽으로 편향돼 생성 트리의 높이가 모두 일정하며 리프 노드가 꽉 찬 이진 트리 마지막 레벨을 제외하고 완전하게 노드들이 채워져 있고, 마지막 레벨은 왼쪽부터 채워진 트리

 

                          ①                                                ①                                                              ①

                      ②                                            ②            ③                                              ②              ③ 

                 ③                                             ④    ⑤      ⑥   ⑦                                      ④     ⑤

             ④

         ⑤

 

데티러를 트리 자료 구조에 저장할 때 편향 이진 트리의 형태로 저장하면 탐색 속도가 저하되고 공간이 많이 낭비되는 단점이 있다. 일반적으로는 완전 이진 트리 형태(LCA, 인덱스트리)를 사용한다.

 

이진 트리의 순차 표현

 

가장 직관적이면서 편리한 트리 자료구조 형태는 배열이다.

 

트리의 노드와 배열의 인덱스 사이 상관관계 
이동 목표 노드 인덱스 연산 제약 조건 (N = 노드 개수)
루트 노드 index = 1  
부모 노드 index = index / 2 (몫) 현재 노드가 루트 노드가 아님
왼쪽 자식 노드 index = index * 2 index * 2 <= N
오른쪽 자신 노드 index = index * 2 + 1 index * 2 + 1 <= N

 

예시 - 위의 완전 이진 트리

 

5번 부모 노드 인덱스 → 5/2 = 2

2번 왼쪽 자식 노드 인덱스 → 2 * 2 = 4

2번 오른쪽 자식 노드 인덱스 → 2*2+1 = 5  

 

참고

https://www.youtube.com/watch?v=ebp6xyrArKo&list=PLFgS-xIWwNVX-zm4m6suWC9d7Ua9z7fuT&index=36

 

'알고리즘 > 트리' 카테고리의 다른 글

백준 11725번 : 트리의 부모 찾기  (0) 2024.06.18
트리와 그래프의 차이  (0) 2024.06.18
트리 개념  (0) 2024.06.17