This commit is contained in:
2022-04-25 21:52:36 +05:30
parent acc9f4eaea
commit 91cc45db21
2 changed files with 62 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
curr = root
while curr:
# Both p and q can be found in right subtree so move
# curr there
if p.val > curr.val and q.val > curr.val:
curr = curr.right
# Both p and q can be found in left subtree so move
# curr there
elif p.val < curr.val and q.val < curr.val:
curr = curr.left
# If above cases fail, that means we are already at a `curr`
# where p exists in one side and q exists on another side so
# that must mean `curr` is the LCA
else:
return curr