https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/
좌측 서브 트리의 모든 노드의 값 < 각 노드의 값 < 우측 서브 트리 모든 노드 값
따라서,
1) 모두 최상위 노드보다 작다면 좌측 서브 트리에서 찾기
2) 모두 최상위 노드보다 크다면 우측 서브 트리에서 찾기
3) 최상위 노드가 두 개의 노드 사이에 있다면 최저 공통 조상
/**
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
// 두 노드의 공통 조상찾기
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
TreeNode node = root;
while(node != null){
if(p.val < node.val && q.val < node.val){
node = node.left;
}else if(node.val < p.val && node.val < q.val){
node = node.right;
}else {
return node;
}
}
return node;
}
}
[BJ] 11055 : 가장 큰 증가하는 부분 수열 (0) | 2024.11.28 |
---|---|
[BJ] 15553 : 난로 (0) | 2024.11.22 |
[LeetCode] 21. Merge Two Sorted List (0) | 2024.11.20 |
[BJ] 1922 : 네트워크 연결 (0) | 2024.11.20 |
[SWEA] 미생물격리 (0) | 2024.11.16 |