美文网首页
最近公共祖先

最近公共祖先

作者: Magic11 | 来源:发表于2019-03-11 15:02 被阅读0次

https://www.lintcode.com/problem/lowest-common-ancestor-of-a-binary-tree/description
给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。

最近公共祖先是两个节点的公共的祖先节点且具有最大深度。
假设给出的两个节点都在树中存在

class Solution {
public:
    /*
     * @param root: The root of the binary search tree.
     * @param A: A TreeNode in a Binary.
     * @param B: A TreeNode in a Binary.
     * @return: Return the least common ancestor(LCA) of the two nodes.
     */
    TreeNode * lowestCommonAncestor(TreeNode * root, TreeNode * A, TreeNode * B) {
        // write your code here
        vector<TreeNode *> vecA;
        preOrder(vecA, root, A);
        vector<TreeNode *> vecB;
        preOrder(vecB, root, B);
        
        TreeNode *res = NULL;
        
        for (int i = 0; i < vecA.size() && i < vecB.size(); i++) {
            if (vecA[i] == vecB[i]) {
                res = vecA[i];
            } else {
                break;
            }
        }
        
        return res;
    }
    
    bool preOrder(vector<TreeNode *> &vec, TreeNode * root, TreeNode *node) {
        if (root == NULL) {
            return false;
        }
        
        if (root == node) {
            vec.push_back(node);
            return true;
        }
        
        vec.push_back(root);
        
        if (preOrder(vec, root->left, node)) {
            return true;
        }

        if (preOrder(vec, root->right, node)) {
            return true;
        }
        
        vec.pop_back();
        return false;
    }
};

引:https://www.cnblogs.com/theskulls/p/5135898.html
最近公共祖先 II:
https://www.lintcode.com/problem/lowest-common-ancestor-ii/description?_from=ladder&&fromId=53
最近公共祖先 III:
https://www.lintcode.com/problem/lowest-common-ancestor-iii/description

相关文章

  • 最近公共祖先

    LeetCode题目地址 在root为根的二叉树中找A,B的LCA: 如果找到了就返回这个LCA 如果只碰到A,就...

  • 最近公共祖先

    最近公共祖先 简称LCA(Lowest Common Ancestor),所谓LCA,是当给定一个有根树T时,对于...

  • 最近公共祖先

    https://www.lintcode.com/problem/lowest-common-ancestor-o...

  • 最近公共祖先系列

    最近公共祖先I 描述: 给定一棵二叉树,找到两个节点的最近公共父节点 (LCA)。最近公共祖先是两个节点的公共的祖...

  • lintcode 最近公共祖先

    给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。最近公共祖先是两个节点的公共的祖先节点且具有最大深度。样例...

  • LCA问题及其倍增解法

    [TOC] LCA,最近公共祖先 在有根树中,找出某两个结点u和v最近的公共祖先(或者说,离树根最远的公共祖先)。...

  • LCA_最近公共祖先

    LCA 最近公共祖先在一棵没有环的树上,每个节点肯定有其父亲节点和祖先节点,而最近公共祖先,就是两个节点在这棵树上...

  • LCA(最近公共祖先)算法

    在一棵没有环的树上,每个节点肯定有其父亲节点和祖先节点,而最近公共祖先,就是两个节点在这棵树上深度最大的公共的祖先...

  • 算法—— 最近公共祖先 III

    给一棵二叉树和二叉树中的两个节点,找到这两个节点的最近公共祖先LCA。两个节点的最近公共祖先,是指两个节点的所有父...

  • 二叉树-最近的公共祖先

    已知二叉树,求二叉树中给定的两个节点的最近公共祖先。 最近公共祖先: 两节点v与w的最近公共祖先u,满足在树上最低...

网友评论

      本文标题:最近公共祖先

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