File tree Expand file tree Collapse file tree 1 file changed +24
-0
lines changed
lowest-common-ancestor-of-a-binary-search-tree Expand file tree Collapse file tree 1 file changed +24
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments