【LeetCode】 二叉搜索树的最近公共祖先

题目描述:

https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/

解题思路:

二叉搜索树:二叉查找树(Binary Search Tree),(又:二叉搜索树、二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树

递归;
第一步:终止条件,当给定的两个节点p,q的值在根结点两侧或其中一个就是根结点,则返回根节点
第二步:返回值:返回根结点;
第三步:本级需要做的事:判断p,q都在root的左还是右侧;

代码:

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);
    }
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容