Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 정보처리기사
- 프로그래머스
- 안드로이드
- 혼공챌린지
- 오블완
- groupby
- 정처기
- 안드로이드스튜디오
- 자료구조
- join
- Til
- MySQL
- doitandroid
- 코틀린
- 혼공단
- select
- 티스토리챌린지
- CS
- 알고리즘
- 카카오코테
- java
- 인프런
- 혼공파
- 자바
- 기술면접
- Android
- SQL
- 코테
- Kotlin
- 스터디
Archives
- Today
- Total
Welcome! Everything is fine.
#13. 트리(Tree) 본문
728x90
트리(Tree)란?
트리는 비선형 자료구조 중 하나로, 나무를 거꾸로 뒤집어 놓은 듯한 모양으로 인해 트리(Tree)라고 불린다. 마치 회사 조직도나 가계도처럼 생긴 트리는 계층적 구조를 잘 표현할 수 있다. 트리는 그래프의 일종으로 노드(Node)와 간선(Edge)으로 이루어져 있다. 트리에서 사용하는 용어는 다음과 같다.
- 루트 노드(root node) : 부모노드가 없는 노드
- 부모 노드(parent node) : 루트 노드 방향으로 연결된 노드
- 자식 노드(child node) : 루트 노드의 반대 방향으로 연결된 노드
- 단말 노드(leaf node) : 자식 노드가 없는 노드
- 형제 노드(sibling node) : 부모 노드가 같은 노드
- 레벨(level) : 루트노드로부터 노드의 상대적 위치를 의미
- 높이(height) : 트리의 최대 레벨 + 1을 의미
- 차수(degree) : 자식 노드의 개수를 의미
트리의 특징
- 편향 트리가 아닌 이상 일반적으로 삽입이나 삭제 수행 시 O(logN)의 시간복잡도를 갖는다.
- 트리에는 사이클이 존재할 수 없다.(사이클이 없어서 계층적 관계를 표현할 수 있다.)
- 트리는 자기 참조적 구조를 가지고 있어 특정 노드에서 서브 트리 전체를 나타내거나 탐색할 수 있다.
- 이진 탐색 트리와 같은 정렬된 트리 구조 → 범위 검색에 유리, 효율적인 검색
- 불균형한 트리의 경우 재조정이 필요할 수 있어 추가적인 연산이 필요하다.
- 트리에서 루트 노드를 제외한 모든 노드는 단 하나의 부모 노드를 가진다.
이진 트리
이진 트리란 자식 노드가 최대 2개인 트리다. 이진 트리의 종류는 다음과 같다.
- 완전 이진 트리(complete binary tree) : 트리의 마지막 레벨을 제외한 모든 레벨에 노드가 채워져 있으며, 마지막 레벨을 제외한 모든 레벨에 노드가 채워져 있는 트리.
- 포화 이진 트리(perfect binary tree) : 트리의 마지막 레벨까지 노드가 모두 채워져 있는 이진 트리.
- 이진 탐색 트리(BST, Binary Search tree) : 한 노드의 왼쪽 서브 트리는 해당 노드의 값보다 작은 값을 가진 노드들로 구성되고, 오른쪽 서브 트리는 해당 노드의 값보다 큰 값을 가진 노드로 구성된 트리.
'CS 스터디' 카테고리의 다른 글
#15. 멀티 프로세스와 멀티 스레드 (0) | 2024.03.07 |
---|---|
#14. 힙(Heap) (0) | 2024.02.27 |
#12. 배열(Array)과 연결 리스트(LinkedList) (0) | 2024.02.20 |
#11. Stack과 Queue의 차이 (0) | 2024.02.18 |
#10. 스케줄러의 종류 (0) | 2024.02.13 |