Lowest Common Ancestor of a Binary Search Tree - LeetCode 235 - Java
- 이진 탐색 트리(BST)에서 주어진 두 노드 P와 Q의 최소 공통 조상(LCA)을 찾는 문제입니다. 🌳
- LCA는 두 노드 P와 Q를 모두 자손으로 가지는 가장 낮은 노드로 정의되며, 노드 자신도 자손으로 간주될 수 있습니다. 📜
- BST의 핵심 속성(루트보다 작은 값은 왼쪽, 큰 값은 오른쪽에 위치)을 활용하여 O(log N) 시간 복잡도로 해결합니다. ↔️
- 알고리즘은 현재 노드에서 시작하여 P와 Q의 값을 비교합니다. 🎯
- 만약 P와 Q가 모두 현재 노드보다 작으면 왼쪽 서브트리로 이동합니다. 👈
- 만약 P와 Q가 모두 현재 노드보다 크면 오른쪽 서브트리로 이동합니다. 👉
- P와 Q 중 하나는 현재 노드보다 작고 다른 하나는 크거나, 둘 중 하나가 현재 노드와 같으면 현재 노드가 LCA가 됩니다. 💡
- 이 반복적인 접근 방식은
current 노드를 루트에서 시작하여 P와 Q의 값에 따라 적절히 이동시키며 LCA를 찾습니다. 🔄
- 문제의 제약 조건으로 모든 노드는 고유하고, P와 Q는 서로 다르며, 항상 BST 내에 존재함이 보장되어 해답이 항상 존재합니다. ✅
데브허브 | DEVHUB | Lowest Common Ancestor of a Binary Search Tree - LeetCode 235 - Java