題目描述:
https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/
解題思路:
二叉搜索樹:二叉查找樹(Binary Search Tree),(又:二叉搜索樹、二叉排序樹)它或者是一棵空樹,或者是具有下列性質(zhì)的二叉樹: 若它的左子樹不空,則左子樹上所有結(jié)點的值均小于它的根結(jié)點的值; 若它的右子樹不空,則右子樹上所有結(jié)點的值均大于它的根結(jié)點的值; 它的左、右子樹也分別為二叉排序樹
遞歸;
第一步:終止條件,當(dāng)給定的兩個節(jié)點p,q的值在根結(jié)點兩側(cè)或其中一個就是根結(jié)點,則返回根節(jié)點
第二步:返回值:返回根結(jié)點;
第三步:本級需要做的事:判斷p,q都在root的左還是右側(cè);
代碼:
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if((root->val - p->val)*(root->val - q->val) <= 0)
return root;
if(root->val < p->val && root->val < q->val)
return lowestCommonAncestor(root->right, p, q);
else
return lowestCommonAncestor(root->left, p, q);
}
};