Skip to content

Commit 69410d0

Browse files
author
이연수
committed
Lowest Common Ancestor of a Binary Search Tree
1 parent 4b0296a commit 69410d0

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package leetcode_study
2+
3+
/**
4+
* Binary Search Tree에서 가장 근접한 공통 조상을 찾는 문제
5+
* BST의 성질인 부모 노드보다 작은 값은 왼쪽 부모 노드보다 큰 값은 오른쪽에 위치함을 사용해 문제 해결
6+
*
7+
* 시간 복잡도: O(n) or O(logn)
8+
* -> balanced BST의 경우 조회 구간이 절반으로 줄기 때문에 O(logn)의 시간 복잡도를 갖지만 편향될 경우 O(n)의 시간 복잡도를 가짐.
9+
*
10+
* 공간 복잡도: O(1)
11+
* -> 반복문을 사용하여 추가 메모리를 사용하지 않음
12+
*/
13+
fun lowestCommonAncestor(root: TreeNode?, p: TreeNode?, q: TreeNode?): TreeNode? {
14+
var currentNode = root
15+
16+
while (currentNode != null) {
17+
when {
18+
p?.`val`!! < currentNode.`val` && q?.`val`!! < currentNode.`val` -> currentNode = currentNode.left
19+
p?.`val`!! > currentNode.`val` && q?.`val`!! > currentNode.`val` -> currentNode = currentNode.right
20+
else -> return currentNode
21+
}
22+
}
23+
return null
24+
}

0 commit comments

Comments
 (0)