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 |
Tags
- 회고
- GIT
- 개발자 취업
- CS
- aop
- 코딩공부
- Java
- ArrayList
- 코딩문제
- 항해99
- 이진 탐색(binary search)
- 자바
- github
- 코딩테스트 준비
- 99클럽
- 배열
- HTML
- 코딩
- 프로그래머스
- Grafana
- Entity
- 자료구조
- wil
- 면접(java
- 메서드
- css
- 정렬 알고리즘(sort algorithm)
- Til
- cs 공부)준비
- Spring
Archives
- Today
- Total
hayu's 개발 일지
99클럽 코테 스터디 15일차 TIL + 트리(Tree) 본문
학습 키워드
- 트리(Tree)
공부한 내용
Tree
- 트리(Tree)는 계층적인 구조를 나타내는 비선형 자료구조로 그래프(Graph)의 특수한 형태이다.
- 트리는 노드(Node)와 간선(Edge)으로 이루어져 있다.
→ 트리는 하나의 루트 노드를 가지고 있으며, 각 노드는 0개 이상의 자식 노드를 가질 수 있다. 이러한 구조로 인해 데이터를 계층적으로 표현할 수 있다.
트리의 주요 개념과 용어
- 노드(Node) : 트리의 기본 단위로 데이터를 저장하는 요소이다. 각 노드는 부모 노드와 하위 노드(자식 노드)를 가질 수 있다.
- 루트(Root) : 트리의 맨 위에 있는 노드로 다른 모든 노드는 루트를 향해 이어진 경로를 가진다. 트리는 하나의 루트 노드만을 가진다.
- 루트 노드 : 트리의 시작 노드로 부모가 없는 최상위 노드이다.
- 간선(Edge) : 노드와 노드 간을 연결하는 선
- 경로(Path) : 특정 노드에서 노드까지의 경로(순서) / 한 번 지나쳤던 경로를 다시 지나는 것은 허락하지 않는다.
트리(Tree)의 장점 및 단점
장점
- 계층적 구조 : 트리는 계층적 구조를 가지고 있기 때문에 데이터를 계층적으로 표현할 수 있다. 이로 인해 트리는 현실 세계의 많은 문제를 효과적으로 모델링할 수 있다.
- 빠른 탐색 속도 : 이진 탐색 트리(Binary Search Tree)의 경우 데이터를 정렬된 상태로 유지하므로 탐색, 삽입, 삭제 연산에 대해 평균적으로 O(log n)의 시간 복잡도를 가진다.
- 자기 참조적 구조 : 트리는 자기 참조적인 구조를 가지고 있어 특정 노드에서 서브 트리 전체를 나타내거나 탐색할 수 있다. 이를 활용하여 효율적인 재귀 알고리즘을 구현할 수 있다.
- 정렬 및 범위 검색 : 이진 탐색 트리와 같은 정렬된 트리 구조는 정렬된 상태를 유지하므로 범위 검색에 유리하다. 정렬된 순서로 데이터에 접근할 수 있어 효율적인 검색이 가능하다.
단점
- 삽입 및 삭제의 복잡성 : 트리의 구조를 유지하기 위해 삽입 및 삭제 연산이 복잡할 수 있다. 특히, 불균형한 트리의 경우 트리의 재조정이 필요할 수 있어 추가적인 연산이 필요하다.
- 메모리 사용 : 트리는 포인터로 연결된 노드 구조를 가지고 있기 때문에 메모리 사용이 비교적 크다. 트리의 균형을 유지하기 위해 추가적인 포인터를 사용하는 경우 메모리 사용이 더욱 증가할 수 있다.
- 순회 순서의 의존성 : 트리의 순회 순서는 트리의 구성에 따라 달라진다. 따라서 트리에 저장된 데이터를 순차적으로 접근해야 하는 경우 순회 순서에 따라 접근해야 하므로 일반적인 순차 자료구조보다는 조금 더 복잡할 수 있다.
트리 종류
편향 트리(skew tree)
- 모든 노드들이 자식 노드를 가진 트리입니다. 경사 트리라고도 불린다. 또한 아래 그림은 왼쪽 자식만 존재하기 때문에 left skew tree라고 한다.
이진 트리(Binary Tree)
- 뒤에서 배울 내용으로 각 노드의 차수(자식 노드)가 2이하인 트리 구조이다.
이진 탐색 트리(Binary Search Tree, BST)
- 굉장히 중요한 트리 구조로 BST라고도 하며 순서화된 이진 트리이다.
- 노드의 왼쪽 자식은 부모의 값보다 항상 작은 값을 가져야 하고 노드의 오른쪽 자식은 부모의 값보다 항상 큰 값을 가져야 한다는 규칙이 존재한다.
m원 탐색 트리(m-way Search Tree)
- 최대 m 개의 서브 트리를 갖는 탐색 트리이다.
- 이진 탐색 트리의 확장된 형태로 높이를 줄이기 위해 사용한다.
균형 트리(Balanced Tree, B-Tree)
- m원 탐색 트리에서 높이 균형을 유지하는 트리이다.
- height-balanced m-way tree라고도 한다.
트리 사용예시
트리는 굉장히 많은 곳에서 사용되고 있다.
<계층적인 데이터 저장>
- 트리는 데이터를 계층 구조로 저장하기 때문에 파일 이나 폴더와 같이 계층구조를 갖는 곳에 사용된다.
<효율적인 검색 속도>
- 효율적인 삽입, 삭제, 검색을 위해 트리 구조를 사용한다.
<힙(Heap)>
- 힙(heap)도 트리를 이용한 구조이다.
<데이터 베이스 인덱싱>
- 데이터베이스 인덱싱을 구현하는데 트리를 사용한다.
- 컴퓨터 공학적 지식에서 굉장히 중요한 일이다.
- 예) B-Tree, B+Tree, AVL-Tree
<Trie 자료구조>
- 사전(Dictionary)을 저장하는 데 사용되는 특별한 종류의 트리이다.
회고
발생한 문제
- 코딩 문제를 풀다가 트리에 대해 공부하지 못해서 풀지 못했다.
해결 방법
- 트리에 대해 알아보았다.
추후 학습할 내용
- 트리에 대한 공부를 진행했지만 아직 어려워서 추후 더 공부할 예정이다.
참고 자료
- https://readerr.tistory.com/35#google_vignette
'자료구조&알고리즘' 카테고리의 다른 글
99클럽 코테 스터디 25일차 TIL + Deque(1) (0) | 2024.06.14 |
---|---|
99클럽 코테 스터디 17일차 TIL + ArrayList vs LinkedList (1) | 2024.06.06 |
99클럽 코테 스터디 12일차 TIL + HashMap 메서드 (0) | 2024.06.01 |
99클럽 코테 스터디 11일차 TIL + HashMap (0) | 2024.05.31 |
99클럽 코테 스터디 10일차 TIL + Hash Table (0) | 2024.05.30 |