Created
January 24, 2017 14:27
-
-
Save primaryobjects/d17cd1a05a940a652e1be8173e5be228 to your computer and use it in GitHub Desktop.
Lowest Common Ancestor of a Binary Search Tree BST
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Start at root and check if p and q are less, then go left, otherwise go right. */ | |
var lowestCommonAncestor = function(root, p, q) { | |
if (root.val > p.val && root.val > q.val) { | |
return lowestCommonAncestor(root.left, p, q); | |
} | |
else if (root.val < p.val && root.val < q.val) { | |
return lowestCommonAncestor(root.right, p, q); | |
} | |
else { | |
return root; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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).” | |
_______6______ | |
/ \ | |
___2__ ___8__ | |
/ \ / \ | |
0 _4 7 9 | |
/ \ | |
3 5 | |
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. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment