티스토리 뷰
균형 트리 (Balanced Tree)
이진트리는 그 균형이 맞지 않으면 검색 성능이 선형 탐색과 유사해진다. 한 방향의 트리는 연결 리스트와 같다.
이러한 문제를 해결하기 위해 균형 트리가 탄생하였다. 종류는 Red-Black Tree, B-Tree등이 있는데 이러한 균형 트리는 균형을 유지하기 위해 삽입 or 삭제시 스스로 균형을 유지해 나간다. 균형을 유지한 덕분에 균형트리는 O(logN)의 탐색 성능을 보장한다.
B-Tree
균형트리의 한 종류로 자식 노드가 두 개로 고정된 이진 트리와 달리 자식 노드의 개수가 최대 M개인 트리로 자식 노드의 최대 개수를 차수라고 한다. 이 차수가 홀수인지 짝수인지에 따라 알고리즘이 많이 달라진다.
조건
B-Tree의 조건은 아래와 같다.
노드의 데이터 개수가 n개이면 자식 노드는 n+1개 이다.
노드의 데이터는 정렬된 상태이다.
자식 노드의 데이터는 부모 노드의 데이터보다 왼쪽에 있으면 작은 값을 오른쪽에 있으면 큰 값을 나타낸다.
Root 노드의 자식이 있다면 반드시 2개 이상이다.
Root 노드를 제외한 모든 노드는 적어도 차수/2개의 데이터를 가져야한다.
Leaf노드(자식 노드가 존재하지 않는 노드들)의 레벨이 모두 같아야 한다.
입력 자료는 중복할 수 없다.
B+Tree
B+Tree는 인덱스 노드와, 데이터 노드를 분류하고 모든 데이터 노드는 Leaf 노드이며 데이터 노드들은 서로 연결리스트로 연결되어 있다.
이러한 특성 덕분에 빠른 탐색 성능을 가지고 있다.
'Algorithm' 카테고리의 다른 글
배열(Array)과 연결리스트(List) (0) | 2022.09.25 |
---|---|
[알고리즘] 이진 탐색 방법 (0) | 2022.09.23 |
해시 함수와 해시 테이블 (0) | 2022.07.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Clean Architecture
- multimap
- 동적 디스패치
- 외부 단편화
- 정적 타입 언어
- Object Pool
- 컴포짓 패턴
- ATDD
- RestAssured
- 동적 타입 언어
- 메모리 파편화
- 세션 불일치
- Session
- OOP
- pool
- 메모리 단편화
- 클린 아키텍처
- 객체 풀
- 내부 단편화
- pass by value
- java
- SpringBoot 2.2
- 수직 분할
- Sticky Session
- pass by reference
- 장애 해결기
- 뾰족함
- 육각형 아키텍처
- 수평 분할
- Memory Fragmentation
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함