LeetCode 235. 二叉搜索树的最近公共祖先
原题链接
简单
作者:
Tracing
,
2020-08-19 22:14:54
,
所有人可见
,
阅读 447
- p,q都在左子树(二者的值都小于根的值)
- p,q都在右子树 (二者的值都大于根的值)
- p,q分别在左右子树(此时最近公共祖先为root)
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
function<TreeNode*(TreeNode*)> lca = [&](TreeNode* root) {
if(root == nullptr) return (TreeNode*)nullptr;
if (root->val > p->val && root->val > q->val) {
return lca(root->left);
}
else if (root->val < p->val && root->val < q->val) {
return lca(root->right);
}
return root;
};
return lca(root);
}
};