LeetCode link: https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/
Given a binary search tree (BST), find the lowest common ancestor (LCA) node of two given nodes in the BST.
According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to be a descendant of itself).”
graph TD
root((6))
root.left((2))
root.right((8))
3lvl_1((0))
3lvl_2((4))
3lvl_3((7))
3lvl_4((9))
4lvl_1((3))
4lvl_2((5))
root --- root.left
root --- root.right
root.left --- 3lvl_1
root.left --- 3lvl_2
root.right --- 3lvl_3
root.right --- 3lvl_4
3lvl_2 --- 4lvl_1
3lvl_2 --- 4lvl_2
Input:
root = [6,2,8,0,4,7,9,null,null,3,5]
p = 2
q = 8
Output:
6
Explanation: The LCA of nodes 2 and 8 is 6.
graph TD
root((6))
root.left((2))
root.right((8))
3lvl_1((0))
3lvl_2((4))
3lvl_3((7))
3lvl_4((9))
4lvl_1((3))
4lvl_2((5))
root --- root.left
root --- root.right
root.left --- 3lvl_1
root.left --- 3lvl_2
root.right --- 3lvl_3
root.right --- 3lvl_4
3lvl_2 --- 4lvl_1
3lvl_2 --- 4lvl_2
Input:
root = [6,2,8,0,4,7,9,null,null,3,5]
p = 2
q = 4
Output:
2
Explanation:
The LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.
Input:
root = [2,1]
p = 2
q = 1
Output:
2
- The number of nodes in the tree is in the range
[2, 105]
. - -10^9 <= Node.val <= 10^9
- All Node.val are unique.
- p != q
- p and q will exist in the BST.