https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/
思路:二叉搜索树性质
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if (root->val > min(p->val, q->val) && (root->val < max(p->val, q->val))) {
return root;
}
if (root->val > q->val && root->val > p->val) {
return lowestCommonAncestor(root->left, p, q);
}
if (root->val < q->val && root->val < p->val) {
return lowestCommonAncestor(root->right, p, q);
}
return root;
}
非递归
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
while(root) {
if (root->val < p->val && root->val < q->val) {
root = root->right;
} else if (root->val > p->val && root->val > q->val) {
root = root->left;
} else {
return root;
}
}
return NULL;
}