二叉搜索树的最近公共祖先
题目链接
题目解答
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if (root == NULL)
return NULL;
if (root->val > p->val && root->val > q->val) {
TreeNode* left = lowestCommonAncestor(root->left, p, q);
if (left)
return left;
}
if (root->val < p->val && root->val < q->val) {
TreeNode* right = lowestCommonAncestor(root->right, p, q);
if (right)
return right;
}
return root;
}
};
做题感悟
- 该题目我又没有自己亲自完成,(
), 因为关于利用二叉搜索树的特性去完成实在是想不到。当看到卡哥的当该节点是在p和q之间是就是p、q的最近公共祖先我还想了半天,不过自己亲手画了画,还真就是这样的。 - 然后还有一点就是对于递归函数有无返回值的情况,这次又再温习了一下。