Given a binary search tree (BST) where all node values are unique, and two nodes p
and q
, find their lowest common ancestor (LCA).
The lowest common ancestor of two nodes is defined as the deepest node in the tree that has both nodes as descendants. A node can be considered a descendant of itself.
Constraints:
Examples:
// Example 1: // 5 // / \ // 3 8 // / \ / \ // 1 4 7 9 // \ // 2 const root1 = createTree([5, 3, 8, 1, 4, 7, 9, null, 2]); const p1 = findNode(root1, 3); const q1 = findNode(root1, 8); console.log(lowestCommonAncestor(root1, p1, q1)?.val); // Output: 5 // Example 2: // 5 // / \ // 3 8 // / \ / \ // 1 4 7 9 // \ // 2 const root2 = createTree([5, 3, 8, 1, 4, 7, 9, null, 2]); const p2 = findNode(root2, 3); const q2 = findNode(root2, 4); console.log(lowestCommonAncestor(root2, p2, q2)?.val); // Output: 3 // Explanation: Node 3 is the LCA since it's the parent of 4