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、两个都大于root,找root->right;
2、两个都小于root,找root->left;
3、不符合1,2,就返回root。
class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if (!root) return root; int low = min(p->val, q->val); int high = max(p->val, q->val); int rt = root->val; if (high < rt) return lowestCommonAncestor(root->left, p, q); else if (low > rt) return lowestCommonAncestor(root->right, p, q); else return root; } };