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