728x90
반응형
[알고리즘] 🌲 트리 기본 개념
트리
트리(Tree
)는 노드(Node
)와 엣지(Edge
)로 연결된 그래프의 특수한 형태 입니다.
특징
- 순환 구조가 아니고, 1개의 루트 노드가 존재
- 루트 노드를 제외한 노드는 1개의 부모 노드가 존재
- 트리에서 임의의 두 노드를 이어주는 경로는 유일함
- 트리의 부분 트리 역시 트리의 모든 특징을 따름
트리의 핵심 이론
트리의 구성 요소
- 노드
- 데이터의
index
와value
를 표현하는 요소
- 데이터의
- 엣지
- 노드와 노드의 연결 관계를 나타내는 선
- 루트 노드
- 트리에서 가장 상위에 존재하는 노드
- 부모 노드
- 두 노드 사이의 관계에서 상위 노드에 해당하는 노드
- 자식 노드
- 두 노드 사이의 관계에서 하위 노드에 해당하는 노드
- 리프 노드
- 트리에서 가장 하위에 존재하는 노드
- 서브 트리
- 전체 트리에 속한 작은 트리
코딩 테스트에서 트리🌲 유형
그래프로 푸는 Tree
Node
,Edge
를 인접 리스트로 표현DFS
,BFS
로 해결
예시
Tree
만을 위한 문제
Binary Tree
(이진 트리)Segment Tree
(세그먼트 트리)index tree
(인덱스 트리)Lowest Common Ancestor
(LCA: 최소 공통 조상)
트리를 1차원 배열로 표현Segment Tree
(세그먼트 트리), index tree
(인덱스 트리), Lowest Common Ancestor
(LCA: 최소 공통 조상)는 1차원 배열로 표현이 가능합니다.
- 부모 노드를 이동할 때
index / 2
- 자식 노드로 이동할 때
index * 2
그림으로 설명하면 아래와 같습니다.
부모 노드 이동
자식 노드 이동
728x90
반응형
'0 + 알고리즘(Algorithm)' 카테고리의 다른 글
[알고리즘] 플로이드-워셜(백준 11404, 1389, 11403 -Java) (0) | 2023.04.13 |
---|---|
[알고리즘] 이진 트리(백준 11725, 1911, 9934, 2263, 5639 -Java) (2) | 2023.04.12 |
[알고리즘] 최소 신장 트리(백준 1197, 1922, 1647, 4386 -Java) (0) | 2023.04.10 |
[알고리즘] 벨만-포드(백준 11657, 1865, 1219 -Java) (0) | 2023.04.05 |
[알고리즘] 다익스트라(백준 1238, 1753, 1916, 4485 -Java) (0) | 2023.04.02 |