Lowest Common Ancestor of a Binary Search Tree

Problem Statement

deeksha sharma
Algorithm Problems
2 min readJan 11, 2016

--

Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.

According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v and w as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).”

For example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6. Another example is LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.

Approach

  • Since this is a Binary Search Tree, we know that the left node will be smaller than or equal to the root node and the right node will be greater than the root node.This basically involves checking the below edge cases:
  • If root is null, then return null
  • If either of the nodes is the root node then root node is the LCA (Lowest Common Ancestor)
  • If one of the nodes is greater than the root and another is less than the root then root is the LCA
  • If both the nodes given are same, then there is no LCA, return null
  • If both nodes are smaller than the root, then recursively call the LCA function to compute steps 1 to 4 on the left node of the root.
  • If both nodes are greater than the root, then recursively call the LCA function to compute steps 1 to 4 on the right node of the root.

Run Time

Assuming that the tree is balanced, worst case run time is O(log n). This is because each time we are either processing the left side of the binary search tree or the right side of the binary search tree.

Java Code

--

--

deeksha sharma
Algorithm Problems

Work for https://bonsaiilabs.com/ life long learner ,investing time heavily in personal finance, education, tech and design skills. Twitter: @deekshasharma25