problems: add „235. Lowest Common Ancestor of a Binary Search Tree“
Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
parent
15e6d58b12
commit
9fa6578ce7
1 changed files with 37 additions and 0 deletions
37
problems/lowest-common-ancestor-of-a-binary-search-tree.kt
Normal file
37
problems/lowest-common-ancestor-of-a-binary-search-tree.kt
Normal file
|
@ -0,0 +1,37 @@
|
|||
/**
|
||||
* 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
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue