树-二叉搜索树的最近公共祖先(leetcode 235)

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

树-二叉搜索树的最近公共祖先(leetcode 235)_第1张图片
思路:
二叉搜索树,对于二叉搜索树中的每一个节点,其左子节点的值小于当前节点的值,右子节点的值大于当前节点的值。
递归寻找相应节点。
如果两个节点不分布在以一个节点为根的同一侧,则此节点为祖先。
那么我们可以在两个节点在同一侧时,根据二叉搜索树的特性进行缩小树的范围。

答案:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
     
public:
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
     
         if(root == nullptr) return nullptr;
         if(p->val < root->val && q->val < root->val) 
         return lowestCommonAncestor(root->left, p, q);
         if(p->val > root->val && q->val > root->val)
         return lowestCommonAncestor(root->right,p,q);
         return root;
    }
};

你可能感兴趣的:(树,算法,二叉树,leetcode)