求两个节点的最低公共祖先

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求两个节点的最低公共祖先相关的知识,希望对你有一定的参考价值。

tag: 二叉树

思路一: 分治

思路二:非递归??? 

 

package com.zhaochao.tree;

/**
 * Created by zhaochao on 17/1/24.
 * lowest common ancestor
 */
public class LCA {
    // 在root为根的二叉树中找A,B的LCA:
    // 如果找到了就返回这个LCA
    // 如果只碰到A,就返回A
    // 如果只碰到B,就返回B
    // 如果都没有,就返回null
    public TreeNode LCARec(TreeNode root, TreeNode rootA, TreeNode rootB) {

        if(root == null || root == rootA || root == rootB) {
            return root;
        }

        TreeNode left = LCARec(root.left, rootA, rootB);
        TreeNode right = LCARec(root.right, rootA,rootB);

        if(left != null && right != null) {
            return root;
        }

        if(left != null) {
            return left;
        }

        if(right != null) {
            return right;
        }

        return null;

    }
}

  

以上是关于求两个节点的最低公共祖先的主要内容,如果未能解决你的问题,请参考以下文章

二叉树求两节点最低公共祖先,求随意两节点距离

腾讯实习笔试编程题 满二叉搜索树求三个节点的最低公共祖先

python代码实现二叉树中最低的公共祖先

剑指Offer对答如流系列 - 树中两个结点的最低公共祖先

剑指offer-树中两个节点的最低公共祖先

寻找二叉树中的最低公共祖先结点----LCA(Lowest Common Ancestor )问题(递归)