方法一:递归
利用二叉搜索树的定义
class Solution
{
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q)
{
if (p->val < root->val && q->val < root->val)
{
return lowestCommonAncestor(root->left, p, q);
}
else if (p->val > root->val && q->val > root->val)
{
return lowestCommonAncestor(root->right, p, q);
}
return root;
}
};
方法二:迭代
利用二叉搜索树的定义
class Solution
{
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q)
{
while (root != nullptr)
{
if (p->val < root->val && q->val < root->val)
{
root = root->left;
}
else if (p->val > root->val && q->val > root->val)
{
root = root->right;
}
else
{
break;
}
}
return root;
}
};