Skip to content

Latest commit

 

History

History
108 lines (82 loc) · 1.85 KB

0235__lowest_common_ancestor_of_a_binary_search_tree.md

File metadata and controls

108 lines (82 loc) · 1.85 KB

Lowest Common Ancestor of a Binary Search Tree

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).”

Example 1

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
Loading

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.

Example 2

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
Loading

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.

Example 3

Input:

root = [2,1]
p = 2
q = 1

Output: 2

Constraints

  • 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.