LeetCode/kt/lowest-common-ancestor-of-a-binary-search-tree.kt

42 lines
1,004 B
Kotlin
Raw Normal View History

/**
* Definition for a binary tree node.
* class TreeNode(var `val`: Int = 0) {
* var left: TreeNode? = null
* var right: TreeNode? = null
* }
*/
class Solution {
fun lowestCommonAncestor(
root: TreeNode?,
p: TreeNode?,
q: TreeNode?,
): TreeNode? {
var ancestor: TreeNode? = null
var pTrack = root
var qTrack = root
while (pTrack == qTrack && pTrack != null && qTrack != null) {
ancestor = pTrack
if (pTrack!!.`val` == p!!.`val`) {
return p
} else if (p!!.`val` < pTrack!!.`val`) {
pTrack = pTrack.left
} else {
pTrack = pTrack.right
}
if (qTrack!!.`val` == q!!.`val`) {
return q
} else if (q!!.`val` < qTrack!!.`val`) {
qTrack = qTrack.left
} else {
qTrack = qTrack.right
}
}
return ancestor
}
}