728x90
➊ 특징
- 노드와 에지로 연결된 그래프의 특수한 형태
- 그래프의 표현으로도 트리를 표현할 수 있음
- 순환구조 X, 1개의 루트노드
- 루트노드를 제외한 노드는 1개의 부모노드를 가짐
- 트리의 부분 트리 역시 토리의 모든 특징을 따름
그래프의 표현 및 비교 (간선 리스트, 인접 행렬, 인접 리스트)
간선 리스트 인접 행렬 인접 리스트 중심 간선 노드 노드 시간복잡도 - 느림 빠름 구조 [] d[시작노드][종료노드] d[시작노드] 입력 (시작노드 ,도착노드, 가중치) 가중치 (도착노드, 가중치) 알고리
karla.tistory.com
➋ 트리의 구성요소

구성요소 | 설명 |
노드 | 데이터의 index와 value를 표현하는 요소 |
에지 | 노드와 노드의 연결 관계를 나타내는 선 |
루트 노드 | 트리에서 가장 상위에 존재하는 노드 |
부모 노드 | 두 노드 사이의 관계에서 상위 노드에 해당하는 노드 |
자식 노드 | 두 노드 사이의 관계에서 하위 노드에 해당하는 노드 |
리프 노드 | 트리에서 가장 하위에 존재하는 노드(자식 노드가 없는 노드) |
서브 트리 | 전체 트리에 속한 작은 트리 |
➌ 코딩테스트에서 트리
- 그래프로 푸는 트리 ➜ 노드, 에지
- 인접리스트로 표현
- DFS, BFS
- 트리만을 위한 문제
- 1차원 배열로 표현
- 이진트리
- 세그먼트 트리(index트리)
- LCA(최소공통조상)
➍ 이진트리
- 각 노드의 자식 노드(차수)의 개수가 2이하로 구성돼 있는 트리
- 편향 이진 트리, 포화 이진 트리, 완전 이진 트리
- 리스트로 표현
- 🌟 인덱스 연산 방식 : 세그먼트 트리, LCA 알고리즘

이동 목표 노드 | 인덱스 연산 | 제약조건(N=노드갯수) |
루트 노드 | index = 1 | |
부모 노드 | index = index / 2 | 현재 노드가 루트 노드가 아님 |
왼쪽 자식 노드 | index = index ∗ 2 | index ∗ 2 ≤ N |
오른쪽 자식 노드 | index =index ∗ 2 + 1 | index ∗ 2 + 1 ≤ N |
➎ 세그먼트 트리
세그먼트 트리, 인덱스 트리, 구간합
1. 세그먼트 트리 주어진 데이터의 구간합과 데이터 업데이트를 빠르게 수행하기 위해 고안해낸 자료구조 2. 구간합 합배열(prefix sum)은 업데이트가 느림 arr[1]를 update 한다면 ? sum[1]부터 sum[9]까지
karla.tistory.com
➏ 최소 공통 조상
[11437] 최소 공통 조상 (트리, LCA)
11437번: LCA 첫째 줄에 노드의 개수 N이 주어지고, 다음 N-1개 줄에는 트리 상에서 연결된 두 정점이 주어진다. 그 다음 줄에는 가장 가까운 공통 조상을 알고싶은 쌍의 개수 M이 주어지고, 다음 M개
karla.tistory.com
최소 공통 조상 빠르게 구하기 (트리, 제곱수 LCA, LCA 시간초과)
최소 공통 조상 빠르게 구하기 서로 깊이를 맞춰주거나 같아지는 노드를 찾을 때 기존에 한 단계씩 올려주는 방식에서 2ᵏ씩 올라가 비교하는 방식 기존에 자신의 부모 노드만 저장해 놓던 방식
karla.tistory.com
728x90