• Lintcode 3715 · Lowest Common Ancestor V (最小祖先好题)


    3715 · Lowest Common Ancestor VPRE
    Algorithms
    Medium

    This topic is a pre-release topic. If you encounter any problems, please contact us via “Problem Correction”, and we will upgrade your account to VIP as a thank you.
    Description
    Given a binary tree with a root node root and an array nodes of objects of class TreeNode, you need to find the Lowest Common Ancestor (LCA, Lowest Common Ancestor) of all nodes in nodes and return it.

    Where all the nodes in nodes exist in that binary tree and all the nodes in the binary tree have different values from each other.

    Only $39.9 for the “Twitter Comment System Project Practice” within a limited time of 7 days!

    WeChat Notes Twitter for more information(WeChat ID jiuzhang15)

    The number of nodes in the tree is in the range
    [
    1
    ,
    1
    0
    4
    ]
    [1,10
    4
    ]


    1
    0
    9









    .




    1
    0
    9
    −10
    9
    ≤TreeNode.val≤10
    9

    All TreeNode.val are unique

    All nodes[i] are unique

    All nodes[i] exist in the tree

    Example
    Example 1

    Input

    root = {3,5,1,6,2,0,8,#,#,7,4}
    nodes = [4,7]
    Output

    2
    Explanation

    The lowest common ancestor of TreeNode(4) and TreeNode(7) is TreeNode(2)
    Example 2

    Input

    root = {3,5,1,6,2,0,8,#,#,7,4}
    nodes = [2]
    Output

    2
    Explanation

    The lowest common ancestor of a single node is the node itself
    Example 3

    Input

    root = {3,5,1,6,2,0,8,#,#,7,4}
    nodes = [7,2,6,4]
    Output

    5
    Explanation

    The lowest common ancestor of TreeNode(7)、TreeNode(2)、TreeNode(6) and TreeNode(4) is TreeNode(5)
    Example 4

    Input

    root = {3,5,1,6,2,0,8,#,#,7,4}
    nodes = [0,2,3,1,5,8,6,4,7]
    Output

    3
    Explanation

    nodes contains all the nodes in the tree, and the lowest common ancestor of all the nodes in the tree is the root node
    Tags
    Related Problems

    474
    Lowest Common Ancestor II
    Easy

    578
    Lowest Common Ancestor III
    Medium

    3715
    Lowest Common Ancestor V
    Medium

    解法1:套用的labuladong的模板。

    /**
     * Definition of TreeNode:
     * class TreeNode {
     * public:
     *     int val;
     *     TreeNode *left, *right;
     *     TreeNode(int val) {
     *         this->val = val;
     *         this->left = this->right = NULL;
     *     }
     * }
     */
    
    class Solution {
    public:
        /**
         * @param root: The root node of a binary tree.
         * @param nodes: An array of objects of class TreeNode.
         * @return: The lowest common ancestor of nodes.
         */
        TreeNode* lowestCommonAncestor(TreeNode *root, vector<TreeNode*> &nodes) {
            if (!root) return NULL;
            unordered_set<TreeNode *> nodeSet;
            for (auto pNode : nodes) nodeSet.insert(pNode);
            TreeNode *res = helper(root, nodeSet);
            return res;
        }
    private:
        TreeNode* helper(TreeNode *root, unordered_set<TreeNode *> &nodeSet) {
            if (!root) return NULL;
            if (nodeSet.find(root) != nodeSet.end()) return root;
            TreeNode *left = NULL, *right = NULL;
            
            left = helper(root->left, nodeSet);
            right = helper(root->right, nodeSet);
            
            if (left && right) return root;
            return left ? left : right;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
  • 相关阅读:
    ElasticSearch join连接查询
    Redis篇---第十二篇
    练习26-30:多表关联查询,子查询
    【精通Java】集合类体系之List集合
    【毕业设计】机器视觉答题卡识别系统 - python 深度学习
    Windows系统安装SeaFile个人云盘服务器并实现公网访问管理文件
    181.Hive(三):内置函数,自定义函数,压缩,文件存储
    Java基础-JVM:垃圾回收算法与垃圾收集器
    算法:动态规划的入门理解
    网络技术二十二:NAT&PPP
  • 原文地址:https://blog.csdn.net/roufoo/article/details/134086934