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.
解法1:Recursion
这题有一个很重要的前提是这是一棵BST。并且隐含条件是一定存在对于给点的两个node的LCA。
那么考虑两种情况,假设两个node的大小一个比root大一个比root小,则node分属于左右子树,LCA只可能是root
如果两个node同属一边,则问题也等价于在左子树(假设node的val比root的小),套用递归的思想解决即可。
C++
Java