leetcode/0235_lowest-common-ancestor-of-a-binary-search-tree/python3/solution.py
2022-04-25 21:52:36 +05:30

26 lines
922 B
Python

# 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