题目的意思是给定一个二叉排序树和两个节点,让我们求这两个节点的最低公共祖先节点,最低公共祖先节点可以是某一个节点本身。
思路:由于是二叉排序树,如果两个节点值都比根节点值小,那么LCA肯定出现在左子树中;如果都比根节点值大,那么LCA就出现在右子树中;如果一个比根节点值大或者相等,一个比根节点值小或者相等,那么LCA就是根节点。去左右子树中寻找LCA的方法和去这棵树中寻找LCA的方法一样,采用递归的解法。
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if(root->val>max(p->val,q->val))
return lowestCommonAncestor(root->left, p, q);
if(root->val<min(p->val,q->val))
return lowestCommonAncestor(root->right, p, q);
else return root;
}
};
照顾好自己的身体,控制好自己的情绪,加油!
以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。 同时请,关注我们的公众号,获取最新关于专知以及人工智能的资讯、技术、算法等内容。扫一扫下方关注我们的微信公众号。