美文网首页
235. Lowest Common Ancestor of a

235. Lowest Common Ancestor of a

作者: YellowLayne | 来源:发表于2017-10-27 15:43 被阅读0次

    1.描述

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.
    According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v and w as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).”

            _______6______
           /              \
        ___2__          ___8__
       /      \        /      \
       0      _4       7       9
             /  \
             3   5
    

    For example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6. Another example is LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.

    2.分析

    3.代码

    /**
     * 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 == NULL) return NULL;
            if (p->val < root->val && q->val < root->val) {
                return lowestCommonAncestor(root->left, p, q);
            } else if (p->val > root->val && q->val > root->val) {
                return lowestCommonAncestor(root->right, p, q);
            } else if (root->val == p->val || root->val == q->val || 
                       (p->val < root->val && q->val > root->val) || 
                       (p->val > root->val && q->val < root->val)) {
                return root;
            }
        }
    };
    

    相关文章

      网友评论

          本文标题:235. Lowest Common Ancestor of a

          本文链接:https://www.haomeiwen.com/subject/mgtdpxtx.html