
난이도: ★★☆☆☆ • solved on: 2025-12-07

자료구조
알고리즘/기법
핵심 키워드
- 문제 분해
- v1, v2 중 더 큰 값과 작은 값을 먼저 정한다.
- root.data < 작은 값 → 두 값 모두 오른쪽에 있으므로 오른쪽으로 이동
- root.data > 큰 값 → 두 값 모두 왼쪽에 있으므로 왼쪽으로 이동
- 그 외의 경우는 값들이 양쪽에 걸쳐 있으므로 현재 root가 LCA가 된다.
핵심 로직 흐름
if (root < min) → 오른쪽 if (root > max) → 왼쪽 else → root가 LCA예외 처리
- root == null인 입력은 문제 조건상 발생하지 않는다.
- v1 == v2도 동일 로직으로 root까지 자연스럽게 찾아간다.
public static Node lca(Node root, int v1, int v2) {
int max = Math.max(v1, v2);
int min = Math.min(v1, v2);
if (root.data < min) {
return lca(root.right, v1, v2);
}
if (root.data > max) {
return lca(root.left, v1, v2);
}
return root;
}
비슷한 유형 (GPT 추천)
확장 문제 (GPT 추천)